Python,不暂停的倒计时器
我刚开始学习Python,想在点击按钮时制作一个倒计时器。不过,我希望这个倒计时器能开始倒计时,并把当前的倒计时值显示在文本区域里。同时,我还希望在倒计时运行的时候,应用程序的其他部分不会停止响应。目前,它只能在控制台输出倒计时,但会导致应用程序的其他部分卡住。有没有人能给我一些建议?
from Tkinter import *
import time
import threading
import thread
class App:
def __init__(self, master):
frame = Frame(master)
frame.pack()
self.getvalue = Button(frame, text="Get the Text Area", command=self.thevalue)
self.getvalue.pack(side=LEFT)
self.text_area = Entry()
self.text_area.pack(side=RIGHT)
def thevalue(self):
print "In the value"
try:
t = threading.Thread(target=self.print_time("I am in print_time"))
t.daemon = True
t.start()
except:
print "Error: unable to start thread"
def print_time(self,bleh):
print bleh
print "The text area value is %s" % self.text_area.get()
boom=5
while boom >0:
time.sleep(1)
self.text_area.delete(0, END)
self.text_area.insert(0, boom)
print(boom)
boom -=1
root = Tk()
app = App(root)
root.mainloop()
1 个回答
2
threading.Thread(target=self.print_time("I am in print_time"))
这样做不会达到你想要的效果。这里发生的事情是,函数 self.print_time
被调用了,然后它的返回值被传递给了 threading.Thread
的构造函数。
你需要这样创建线程:
t = threading.Thread(target=self.print_time, args=("I am in print_time",))