python - Python tkinter 更新函数冻结主函数
问题描述
我有一个带有 python API(支持 python 3)的 Windows 应用程序。您可以提供一个具有主要功能的类。在程序启动时,会创建此类的一个实例,并定期调用 main 函数。我可以配置频率,但没有别的。(我无法改变 API 的工作方式)
现在,我想将 tkinter 用于一些可视化、图表等。这是我当前类结构的示例:
import tkinter as tk
class Script:
def __init__(self):
self.root = tk.Tk()
self.count = 0
def main(self):
# do some stuff
print(str(self.count))
self.count += 1
# update gui
self.root.update()
# This is to simulate the software behavior.
import time
scriptInstance = Script()
for i in range(0, 20 * 10):
scriptInstance.main()
time.sleep(0.1)
我遇到的主要问题是,只要您与 Tkinter 交互,root.update() 方法就会冻结主函数。您可以通过上面的示例看到,只要您移动窗口,数字就不会增加。有没有办法防止这种情况?
我试图从另一个线程调用 root.update() ,但由于 Tkinter 不允许这样做,所以它不起作用。
感谢您的任何帮助。
解决方案
推荐阅读
- c# - 仅作用于 C# 中具有相同文件名结构的文件
- python - 获取 simplejson.scanner.JSONDecodeError:期望值:第 2 行第 1 列(字符 1)
- javascript - 如何断言未定义的东西?
- html - 如何在我的 SharePoint 网页上创建 img 按钮
- konvajs - 不使用 textarea 的 Konva 文本编辑选项
- java - 错误 R10(启动超时)> Web 进程未能在启动后 90 秒内绑定到 $PORT
- .net - 如果进入 select linq,如何做一个条件?
- php - Apache FastCGI:“(104)对等方重置连接:mod_fcgid:从 FastCGI 服务器读取数据时出错”
- python - Matplotlib 使用 ax.set() 旋转 xticklabels
- ruby - 语法错误,意外的keyword_rescue,期待keyword_end