首页 > 解决方案 > 在 python tkinter 中设置'after'函数的延迟

问题描述

我正在使用 tkinter 在 python 中编写一个简短的应用程序。一切正常,除了意外暂停 - 它应该每秒生成两次事件,但通常它会在信号之间暂停 5 或 6 秒。我放了打印语句来查找延迟在哪里,发现它是以下语句:

self.frame.after(ms, self.tick_handler)

ms 是 500,所以这应该在 0.5 秒左右发送事件。通常它会这样做,但通常它会在 tick_handler() 收到信号之前挂起 5 或 6 秒。该程序非常简单,单个工作线程从单个队列接收所有输入,事件来自单个 tkinter 帧。该after()语句在工作线程中。我试过关闭 gc ( gc.disable()) 但这没有什么区别。在我的计算机上,除此之外的活动很少。

如果我在暂停期间使用鼠标或键发送其他输入,则会立即处理,因此不会阻塞工作线程。看起来好像收到了信号请求但有一段时间没有触发。我知道我不能指望实时性能,所以 0.6 秒不会值得注意,但是 6.0 秒?

这是我第一次使用 tkinter。关于事件处理,我有什么遗漏吗?

标签: pythoneventstkinter

解决方案


我想你最后没有tkinter.mainloop()包括

PS:我不确定...


推荐阅读