【发布时间】:2017-01-08 16:29:54
【问题描述】:
我正在使用 tkinter 构建 Python GUI 应用程序。 基本上我正在启动并与不同的线程集成,而通信使用输入和输出队列。
在 GUI 端(tkinter 的 mainloop() 所在的主线程)我想添加一个函数,该函数将在主循环的每次迭代中调用(我正在实时处理和显示信息)。
所以我的函数是这样的:
def loop(self):
try:
output_type, data = wlbt.output_q.get_nowait()
pass # if got something out of the queue, display it!
except Queue.Empty:
pass
self.loop_id = self.after(1, self.loop)
在启动程序时,我只需调用self.loop_id = self.after(1, self.loop)。
所以有两件事困扰我:
- 循环功能将 CPU 使用率提高 30%-50%。如果我禁用它,那很好。
- 我希望能够使用
after_idle()来最大化刷新率,但我无法直接替换它 - 得到并出错。
我感觉到有些东西我不完全理解。可以做些什么来解决这些问题?
【问题讨论】: