然后,您需要将
Button小部件与启动工作线程的函数绑定在一起。例如:
import timeimport threadingimport Tkinter as tkclass App(): def __init__(self, root): self.button = tk.Button(root) self.button.pack() self._resetbutton() def _resetbutton(self): self.running = False self.button.config(text="Start", command=self.startthread) def startthread(self): self.running = True newthread = threading.Thread(target=self.printints) newthread.start() self.button.config(text="Stop", command=self._resetbutton) def printints(self): x = 0 while self.running: print(x) x += 1 time.sleep(1) # Simulate harder task
通过这种
self.running方法,您只能通过更改其值来优雅地结束线程。注意,使用多个线程可避免
printints在执行时阻塞GUI 。
我已经阅读了前面的问题,并且我想为什么您在这里明确要求没有多线程的解决方案。在Tkinter中,此解决方案可用于其他线程必须与GUI部件进行通信的情况。例如:在渲染某些图像时填充进度条。
但是,正如注释中指出的那样,这种方法对于仅打印数字而言太复杂了。
在这里,您可以找到许多有关Tkinter的信息和更多示例。
编辑:
由于您的新问题已经结束,因此我将在此处更改代码以阐明最后一点。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)