当循环处理时,Tkinter正在冻结,我该如何防止它?

时间:2011-09-20 21:06:15

标签: python tkinter

我正在制作一些程序,其中包括while循环(用于说明一些数字计算),当我使用Tkinter进行GUI时,程序窗口会冻结,直到循环结束。我想添加一个停止按钮,我希望窗户不要冻结。我怎么能做这两件事?

谢谢

1 个答案:

答案 0 :(得分:3)

您必须使用单独的线程或进程。 Tkinter使用单个线程来处理显示更新,同一个线程用于执行事件回调。如果您的事件处理程序阻塞,那么在完成之前不会执行任何Tkinter代码。

如果你有Tkinter线程(调用Tk.mainloop的线程)和你应用程序其余部分的另一个线程,那么在Tkinter线程中运行的事件处理程序可以简单地传递消息(可能使用{{1} })到您的应用程序事件处理程序。