我有一个Tkinter/ttk应用程序,可以分析每10-25毫秒到达的数据包。我现在的实现使用一个线程,每读取一次套接字后更新30个StringVars,然后调用update_idletasks()更新相应的Entry小部件。我的应用程序在启动后不超过30分钟内崩溃。实时Tkinter/ttk条目小部件更新:线程+队列或.after(1)?
搜索,发现Tk是不是真正线程安全的,并且我有两个主要的选择:
使用一个线程+队列。
使用功能+。经过(1,函数)。
的UI做多一点开始/停止更新,并提供用于显示的条目小部件。
在该系统中的主要的等待是套接字读,它具有2×的超时的期望的分组速率(因此它不能永远块)。
在这种情况下,你会喜欢的方式#1或#2?
我倾向于#2它的简单,但我不知道是否有任何Tk的陷阱沿该路径等。当我等待社区智慧时,我可能会尝试两种方式。
如果我有更复杂的用户界面,我会同意! – BobC 2013-04-29 16:03:30