我刚接触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)