python - 在 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。关于事件处理,我有什么遗漏吗?
解决方案
我想你最后没有tkinter.mainloop()
包括
PS:我不确定...
推荐阅读
- emacs - Fedora 31 上的 Emacs 26.3;在 Xming 上运行;左侧的滚动条
- c - 有没有更快的方法通过跳帧来抓帧?
- android - 评估项目 ':app' 时出现问题。> 用于 Android 应用程序开发的 intellij IDE 上的 ASCII uisng kotlin
- c# - 为什么修改 XML 文档后 XmlNodeList.Count 返回不一致的结果?
- ios - 对 openCropper 的 react-native-image-crop-picker 调用仅导致 ios 崩溃
- sql - SQL - 仅在它们匹配的地方用另一个表列替换列值,否则保留原始值?
- spring-boot - Spring Boot 启动器中的 Camunda 内存泄漏
- debugging - 在 Sapper 服务器代码中设置断点——可行吗?
- python - 创建代码以执行数百次谷歌搜索并提取发布日期
- python - 当多个容器在 AWS Batch 上并行运行时,带有 Selenium 和 Chrome webdriver 的 Docker 容器崩溃