我正在使用tkinter构建一个Python GUI应用程序。 基本上我正在使用不同的线程开始和集成,而通信使用输入和输出队列。
在GUI端(tkinter的mainloop()所在的主线程)我想添加一个函数,它将在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)
。
所以有两件事困扰我:
after_idle()
来最大化刷新率,但我无法替换它 - 得到并且错误。我感觉到有一些我不完全理解的东西。如何解决这些问题呢?
答案 0 :(得分:0)
当你致电self.after(1, self.loop)
时,你要求的功能大约每毫秒运行一次。由于您每秒进行1000次函数调用,因此CPU使用率上升并不令人惊讶。
鉴于人类无法察觉到很多变化,如果你所做的只是更新显示器,那么每秒钟没有理由超过20-30次。