Python 更新!:时间转换器-分配的功能不工作
我已经构建了一个时间转换小部件,我面临的问题是分配给特定变量的函数。我想这样做,当一个输入框中输入一个数字时,另一个会立即更新 快速概述,使用下面代码中的函数,我试图获得在一个条目中输入的值,然后将该值转换两次,以生成两个以上的值,然后将其分配给相关变量 编辑:我已经设法使其中一个函数工作,这要感谢Sujay指出*args错误。我现在更新了下面的代码,以反映我现在的处境。除了仅在小时条目上输入一个值会在其他两个条目中传递一个值的情况外,这些函数似乎可以按预期工作。在第二个或第二分钟的条目中输入值不会产生任何结果 再次感谢任何帮助或指导Python 更新!:时间转换器-分配的功能不工作,python,function,user-interface,tkinter,Python,Function,User Interface,Tkinter,我已经构建了一个时间转换小部件,我面临的问题是分配给特定变量的函数。我想这样做,当一个输入框中输入一个数字时,另一个会立即更新 快速概述,使用下面代码中的函数,我试图获得在一个条目中输入的值,然后将该值转换两次,以生成两个以上的值,然后将其分配给相关变量 编辑:我已经设法使其中一个函数工作,这要感谢Sujay指出*args错误。我现在更新了下面的代码,以反映我现在的处境。除了仅在小时条目上输入一个值会在其他两个条目中传递一个值的情况外,这些函数似乎可以按预期工作。在第二个或第二分钟的条目中输入值
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()
发现这个问题
将函数分配给错误的变量
叹息
感谢Sunjay的评论,以下是问题所在:
Second.trace("w",MinuteInput)
Minute.trace("w",SecondInput)
Hour.trace("w",HourInput)
应该是
Second.trace("w",SecondInput)
Minute.trace("w",MinuteInput)
Hour.trace("w",HourInput)
MinuteInput(*args)
可以解决这个问题。谢谢,这让我有了一点进一步的了解,但是没有,我被抛出了这个错误。返回self.func(*args)文件“c:\Users\ab5302\Desktop\untitle-1.py”,第27行,如果Second>=0.1:TypeError:“>=”在“DoubleVar”和“float”的实例之间不受支持,我实际上正在改进代码。