gpt4 book ai didi

Python GUI 回调函数

转载 作者:行者123 更新时间:2023-12-01 09:09:16 24 4
gpt4 key购买 nike

我正在编写一个 Python 程序,使用 GUI 计算每加仑英里数 (MPG)。下面的代码包含一个名为 calc_mpg 的函数,该函数旨在使用主函数“miles_entry”Entry 和“gallons_entry”Entry 的输入来计算单击“calc_button”时车辆每加仑的英里数。

当单击该按钮时,我收到一条错误消息,指出“miles_entry”未定义。有没有一种方法必须重组或重新设计此代码才能按预期运行。

import tkinter
import tkinter.messagebox

def main():
main_window = tkinter.Tk()
upper_frame = tkinter.Frame(main_window)
lower_frame = tkinter.Frame(main_window)

label1 = tkinter.Label(upper_frame, text='This program calculates MPG')

miles_prompt = tkinter.Label(upper_frame, text='How many miles can be
driven with full gastank?')
miles_entry = tkinter.Entry(upper_frame, width = 10)
gallons_prompt = tkinter.Label(upper_frame, text='How many gallons of
gas can the tank hold?')
gallons_entry = tkinter.Entry(upper_frame, width = 10)

miles_prompt.pack()
miles_entry.pack()
gallons_prompt.pack()
gallons_entry.pack()

calc_button = tkinter.Button(lower_frame, text='Calculate MPG',
command=calc_mpg)
quit_button = tkinter.Button(lower_frame, text='Quit',
command=main_window.destroy)



upper_frame.pack()
lower_frame.pack()
calc_button.pack()
quit_button.pack()
tkinter.mainloop()


def calc_mpg():
miles = float(miles_entry.get())
gallons = float(gallons_entry.get())

mpg = miles / gallons

tkinter.messagebox.showinfo('The miles per gallon for this vehicle is:'
+ mpg + 'mpg.')



main()

最佳答案

您击中了为什么 tk 应用程序通常包装在类中。通过使用类,您可以持久保存对象并跨方法使用它们:

import tkinter
import tkinter.messagebox

class main:
def __init__(self):
main_window = tkinter.Tk()
upper_frame = tkinter.Frame(main_window)
lower_frame = tkinter.Frame(main_window)

label1 = tkinter.Label(upper_frame, text='This program calculates MPG')

miles_prompt = tkinter.Label(upper_frame, text='How many miles can be driven with full gastank?')
self.miles_entry = tkinter.Entry(upper_frame, width = 10)
gallons_prompt = tkinter.Label(upper_frame, text='How many gallons of gas can the tank hold?')
self.gallons_entry = tkinter.Entry(upper_frame, width = 10)

miles_prompt.pack()
self.miles_entry.pack()
gallons_prompt.pack()
self.gallons_entry.pack()

calc_button = tkinter.Button(lower_frame, text='Calculate MPG',
command=self.calc_mpg)
quit_button = tkinter.Button(lower_frame, text='Quit',
command=main_window.destroy)

upper_frame.pack()
lower_frame.pack()
calc_button.pack()
quit_button.pack()
tkinter.mainloop()

def calc_mpg(self):
miles = float(self.miles_entry.get())
gallons = float(self.gallons_entry.get())

mpg = miles / gallons

tkinter.messagebox.showinfo(title="Some info!",message='The miles per gallon for this vehicle is:'
+ str(mpg) + 'mpg.')

main()

我添加了 self 来引用这两个条目,因此您可以在其他方法中使用它们(默认情况下,变量仅存在于它们定义的函数中)。另请注意:

  1. 您忘记将 mpg 转换回信息框中的字符串
  2. 信息框的第一个参数是标题,而不是内容

如果 self 表示法或类不熟悉,您应该在创建 tk 应用之前先研究一下。

关于Python GUI 回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51803339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com