我是Python的新手,我正尝试使用Tkinter作为我的GUI创建一个餐厅模拟(因为这很容易)。
我有一个使用称为的函数的计时器Tick()
(如下所示:)
def Tick(self,time,type,resto,foodname,Database):
if self.cookTimer.winfo_exists() is 1:
.....
else:
if self.cookTimer.winfo_exists() is 1:
self.timeLabel.configure(text="%d" %time)
self.cookTimer.after(1000, lambda: self.Tick(time,type,resto,foodname,Database))
self.cook.protocol("WM_DELETE_WINDOW", lambda: self.Callback(self.cook,resto,Database))
我要做的是退出程序之前,它将首先询问用户“是”或“否”。现在,在中Tick()
,根名为self.cookTimer
。
当用户已经退出时self.cookTimer
,self.timeLabel.configure
它仍在运行,从而引发configure
需要root用户的错误。
有人可以通过告诉我如何使程序configure
在cookTimer
被破坏时不运行来帮助我吗?
after
如果事实证明您不再需要该计划调用,则Tkinter方法将返回一个标识符,该标识符可用于取消该计划调用。超时呼叫就是一个很好的例子。如果您的代码在超时内完成,则您可以取消超时。在您的示例中,当您设置after呼叫时,记录结果并将其用于取消呼叫:
self.after_id = self.cookTimer.after(1000, lambda: ...)
....
self.after_cancel(self.after_id)
您可能要创建一个清理方法,并让WM_PROTOCOL_DELETE和其他终止调用都去那里进行清理并退出。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句