已更新!:时间转换器-指定的功能不起作用



我已经构建了一个时间转换小部件,我面临的问题是分配给特定变量的函数。我想这样做,当一个EntryBox中输入一个数字时,另一个会立即更新

快速概述,使用下面代码中的函数,我试图获得在一个条目中输入的值,然后将该值转换两次,以产生另外两个值,然后分配给相关变量

编辑:我已经设法使其中一个函数工作,部分感谢Sujay指出*args错误。我现在已经更新了下面的代码,以反映我现在的位置。除了在HOUR条目上只输入一个值会在其他两个条目中传递一个值的情况外,这些函数似乎按需工作。在"秒输入"或"分钟输入"中输入值不会产生任何结果。

再次感谢任何帮助或指导。

from tkinter import *
from tkinter.ttk import*
#Global Variables 
root = Tk()
Second = DoubleVar()
Minute = DoubleVar()
Hour = DoubleVar()
#GUI 
class GUI:
def __init__(self, master):
self.self = self
self.master = master
master.title('Time Converter')
master.geometry('+600+300')
master.label1 = Label(root, text = 'Second').grid(column=0, row=0)
master.entry1 = Entry(root, textvariable=Second).grid(pady=5, padx=20, column=0, row=1)
master.label2 = Label(root, text= ' Minute').grid(column=1, row=0)
master.entry2 = Entry(root, textvariable=Minute).grid(pady=5, padx=20, column=1, row=1)
master.label3 = Label(root, text= ' Hour').grid(column=2, row=0)
master.entry3 = Entry(root, textvariable=Hour).grid(pady=5, padx=20, column=2, row=1)

UpdateInProgress = False

#Conversion Functions
def SecondInput(*args):
GUI.UpdateInProgress
if GUI.UpdateInProgress: return
try:
Second.get()
except ValueError:
return
NewMinute = (Second.get()/60)
NewHour = (Second.get()/3600)
GUI.UpdateInProgress = True
Minute.set(NewMinute)
Hour.set(NewHour)
GUI.UpdateInProgress = False
def MinuteInput(*args):
GUI.UpdateInProgress
if GUI.UpdateInProgress: return
try:
Minute.get()
except ValueError:
return
NewSecond = (Minute.get()*60)
NewHour = (Minute.get()*0.01667)
GUI.UpdateInProgress = True
Second.set(NewSecond)
Hour.set(NewHour)
GUI.UpdateInProgress = False
def HourInput(*args):
GUI.UpdateInProgress
if GUI.UpdateInProgress: return
try:
Hour.get()
except ValueError:
return
NewMinute = (Hour.get()*60)
NewSecond = (Hour.get()*3600)
GUI.UpdateInProgress = True
Minute.set(NewMinute)
Second.set(NewSecond)
GUI.UpdateInProgress = False
#Assigning functions to variables
Second.trace("w",MinuteInput)
Minute.trace("w",SecondInput)
Hour.trace("w",HourInput)
#Mainloop
def main():
GUI(root)
root.mainloop()
main()

发现此问题

将函数分配给错误的变量。

叹息

感谢Sujay的评论,问题就在这里:

Second.trace("w",MinuteInput)
Minute.trace("w",SecondInput)
Hour.trace("w",HourInput)

应该是

Second.trace("w",SecondInput)
Minute.trace("w",MinuteInput)
Hour.trace("w",HourInput)

最新更新