【发布时间】:2011-09-20 21:06:15
【问题描述】:
我正在制作一些包含 while 循环的程序(以说明一些数字计算),当我将 Tkinter 用于 GUI 时,程序窗口会冻结,直到循环完成。我想添加一个停止按钮,并且我希望窗口不会冻结。我该怎么做这两件事?
谢谢
【问题讨论】:
我正在制作一些包含 while 循环的程序(以说明一些数字计算),当我将 Tkinter 用于 GUI 时,程序窗口会冻结,直到循环完成。我想添加一个停止按钮,并且我希望窗口不会冻结。我该怎么做这两件事?
谢谢
【问题讨论】:
您必须使用单独的线程或进程。 Tkinter 使用单个线程来处理显示更新,并且使用同一个线程来做事件回调。如果您的事件处理程序阻塞,则在完成之前不会执行任何 Tkinter 代码。
如果您有 Tkinter 线程(调用 Tk.mainloop 的线程)和另一个线程用于应用程序的其余部分,那么在 Tkinter 线程中运行的事件处理程序可以简单地将消息(可能使用 Queue.Queue)传递给您的应用程序事件处理程序。
【讨论】: