我是 GUI 编程的新手,我想用 tkinter 编写一个 Python 程序。我想让它做的就是在后台运行一个可以通过 GUI 影响的简单功能。
该函数从 0 计数到无穷大,直到按下按钮。至少那是我想要它做的。但是我不知道如何在后台运行这个函数,因为 tkinter 的 mainloop() 一直在控制。如果我在无限循环中启动该函数,则无法执行 mainloop() 并且 GUI 已死。
我想在每个循环后将控制权返回给 mainloop(),但是如何在没有用户触发事件的情况下将控制权从 mainloop() 返回到 runapp 函数?
这是一些杀死 GUI 的示例代码:
from Tkinter import *
class App:
def __init__(self, master):
frame = Frame(master)
frame.pack()
self.button = Button(frame, text="START", command=self.runapp)
self.button.pack(side=LEFT)
self.hi_there = Button(frame, text="RESTART", command=self.restart)
self.hi_there.pack(side=LEFT)
self.runapp()
def restart(self):
print "Now we are restarting..."
def runapp(self):
counter = 0
while (1):
counter =+ 1
time.sleep(0.1)
原文由 Demento 发布,翻译遵循 CC BY-SA 4.0 许可协议
您将在另一个问题 Tkinter locks python when Icon loaded and tk.mainloop in a thread 中找到答案。
简而言之,您需要有两个线程,一个用于 tkinter,一个用于后台任务。