我刚开始使用Tkinter(今天才开始),我按照一个工作过的例子制作了一个从摄氏度到华氏度的按钮转换器,但是现在我尝试将其修改为一个练习,以便在一个框中键入值将在另一个框中输出相反的值
例如,10.30的值应该在华氏度输入框中输出50.54,或者32.0的值应该在摄氏度框中输出0.0作为实时更新。以下是迄今为止我所掌握的代码,这些代码虽然有效,但并不完全是最好的:
from tkinter import *
class App:
def __init__(self, master):
frame = Frame(master)
frame.pack()
labelCelsius = Label(frame, text="Celsius")
labelCelsius.grid(row=0, column=0)
labelFahrenheit = Label(frame, text="Fahrenheit")
labelFahrenheit.grid(row=1, column=0)
self.celsius = DoubleVar()
self.celsius.trace("w", self.C2F)
entryCelsius = Entry(frame, textvariable=self.celsius)
entryCelsius.grid(row=0, column=1)
self.fahrenheit = DoubleVar()
self.fahrenheit.trace("w", self.F2C)
entryFahrenheit = Entry(frame, textvariable=self.fahrenheit)
entryFahrenheit.grid(row=1, column=1)
def C2F(self, *args):
IN = self.celsius.get()
self.fahrenheit.set(1.8 * IN + 32)
def F2C(self, *args):
IN = self.fahrenheit.get()
self.celsius.set((IN-32)/1.8)
root = Tk()
root.wm_title("Temperature converter")
app = App(root)
root.mainloop()
这似乎创建了一个无限循环,其中摄氏度更新华氏度,然后华氏度更新摄氏度,反之亦然
基本上,如果输入摄氏度条目,华氏度应该修改,但不应该修改摄氏度,反之亦然
感谢您的帮助:)
其中一种方法是,您可以删除
trace
,然后在设置值之后再添加它相关问题 更多 >
编程相关推荐