Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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_User Interface_Datetime_Timer_Tkinter - Fatal编程技术网

Python中的结束计时器';斯特金特酒店

Python中的结束计时器';斯特金特酒店,python,user-interface,datetime,timer,tkinter,Python,User Interface,Datetime,Timer,Tkinter,我有一个问题,即我想用计时器关闭窗口时出错,我不知道该怎么办: class App(): def __init__(self): self.root = Tk() self.root.geometry("100x50+50+50") self.done_time=datetime.datetime.now() + datetime.timedelta(seconds=a) self.label = Label(text="") self.label.pack()

我有一个问题,即我想用计时器关闭窗口时出错,我不知道该怎么办:

class App():
def __init__(self):
    self.root = Tk()
self.root.geometry("100x50+50+50")
    self.done_time=datetime.datetime.now() + datetime.timedelta(seconds=a) 
    self.label = Label(text="")
    self.label.pack()
    self.update_clock()
    self.root.mainloop()

def update_clock(self):
    elapsed = self.done_time - datetime.datetime.now()
    h,m,s,fs = elapsed.seconds/3600,elapsed.seconds/60,elapsed.seconds%60,(elapsed.microseconds%60)
    #fractional_seconds = math.floor(elapsed.microseconds/1000000.0*100)
    self.label.configure(text="%02d:%02d:%02d:%02d"%(h,m,s,fs))
    self.root.after(100, self.update_clock)
while s == 0:
    self.root.destroy() #====> here is the problem

要取消挂起的更新,您需要保存对作业id的引用。然后您可以在取消后调用
,给出作业id是否正确

self.job_id = self.root.after(...)
...
self.root.after_cancel(self.job_id)

你想要一个无限循环,一次又一次地破坏根窗口?所以我可以这样做?self.job\u id=self.root.after(100,self.update\u clock),而s==0:self.root.after\u cancel(self.job\u id)@jorguss:你不会在循环中完成它。只有一个作业要取消,但我不知道如何在该函数中使用它,因为如果我不使用循环,它会在不到一秒钟内停止