Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 更新!:时间转换器-分配的功能不工作_Python_Function_User Interface_Tkinter - Fatal编程技术网

Python 更新!:时间转换器-分配的功能不工作

Python 更新!:时间转换器-分配的功能不工作,python,function,user-interface,tkinter,Python,Function,User Interface,Tkinter,我已经构建了一个时间转换小部件,我面临的问题是分配给特定变量的函数。我想这样做,当一个输入框中输入一个数字时,另一个会立即更新 快速概述,使用下面代码中的函数,我试图获得在一个条目中输入的值,然后将该值转换两次,以生成两个以上的值,然后将其分配给相关变量 编辑:我已经设法使其中一个函数工作,这要感谢Sujay指出*args错误。我现在更新了下面的代码,以反映我现在的处境。除了仅在小时条目上输入一个值会在其他两个条目中传递一个值的情况外,这些函数似乎可以按预期工作。在第二个或第二分钟的条目中输入值

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

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

编辑:我已经设法使其中一个函数工作,这要感谢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”的实例之间不受支持,我实际上正在改进代码。