【发布时间】:2011-06-30 04:53:46
【问题描述】:
我是 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)
【问题讨论】: