Python中的tkinter问题
获得这项工作的最佳方式是什么?在showinfo上挂起的脚本: 我使用Python3。有没有一种方法可以让它在没有队列或额外导入的情况下工作 我不使用“after”方法,因为计时器可以停止或更改-我有很多计时器具有动态可变的间隔,这非常不方便。如这里所述: Tkinter不是线程安全的;除了主线程之外,您不能从任何地方访问Tkinter小部件 您应该删除Python中的tkinter问题,python,multithreading,timer,tkinter,Python,Multithreading,Timer,Tkinter,获得这项工作的最佳方式是什么?在showinfo上挂起的脚本: 我使用Python3。有没有一种方法可以让它在没有队列或额外导入的情况下工作 我不使用“after”方法,因为计时器可以停止或更改-我有很多计时器具有动态可变的间隔,这非常不方便。如这里所述: Tkinter不是线程安全的;除了主线程之外,您不能从任何地方访问Tkinter小部件 您应该删除计时器实例化。Tk有自己的工具来调度事件,称为after方法 from tkinter import * from tkinter.messag
计时器
实例化。Tk有自己的工具来调度事件,称为after
方法
from tkinter import *
from tkinter.messagebox import *
def timerDone(window):
showinfo('Alert','Alert')
window.destroy()
window = Tk()
window.after(3000,lambda:timerDone(window))
window.mainloop()
这与在之后使用实现的脚本相同。我还添加了一个window.destroy()
调用来中断主循环
你的问题有几种解决方案。最简单的方法是使用after\u cancel
方法停止执行回调。还值得注意的是after
事件被绑定到一个小部件,因此如果拥有after
的小部件被销毁,那么回调将永远不会执行 你试过实现这个吗?是的,但我需要计时器能够在之前停止或更改。您可以使用该方法取消由之后启动的内容。这说明了怎么做,谢谢。不管怎样,有没有一种方法可以做到这一点,而不必在
等之后使用?我有很多时间间隔可以动态变化的计时器,这很不方便。可能是重复的,谢谢。在
之后是否真的没有其他选项?我真的很喜欢和定时器一起工作,尤其是当我有很多定时器的时候(10-15)。使用isAlive、finished、function、interval
等功能非常方便地控制它们。有很多选项。例如,您可以创建设置事件的计时器实例,然后使用after回调来检查它们的状态。基本上,如果你想使用定时器,你就必须在通话结束后使用它们。
from tkinter import *
from tkinter.messagebox import *
def timerDone(window):
showinfo('Alert','Alert')
window.destroy()
window = Tk()
window.after(3000,lambda:timerDone(window))
window.mainloop()