[英]manage 2 Tkinter Threads in python 2.7
我正在使用Python 2.7中的Tkinter来开发应用程序,以简化操作:
from Tkinter import *
class rootWindow(Thread):
def __init__(self):
Thread.__init(self)
self.root = Tk()
self.button = Button(self.root,text="Execute",command=self.exec)
self.start()
self.join()
def run(self):
self.root.mainloop()
def exec(self):
# instruction 1
# instruction 2
# ...
# End instructions
问题是exec()
函数需要花费一些时间(因为它修改的是Excel文件)。
我想在exec()
函数执行其工作的同时运行第二个窗口(带有“请稍候”动画或进度条等exec()
。 所以我创建了:
class waitWindow(Thread):
def __init__(self):
Thread._init__(self)
self.wait = Tk()
self.pb = ttk.Progressbar()
self.pb.pack()
self.start()
def run(self):
self.wait.after(16000, self.des)
self.wait.mainloop()
def des(self):
self.wait.destroy()
我在执行exec()
函数之前调用了此线程。 启动很好,但是我在第二个线程中经过16000 ms之后无法停止第二个线程。
有任何想法吗? 如何在16000毫秒内停止第二个线程? 提前致谢!
您的代码有两个问题。 首先是所有tkinter代码必须在同一线程中运行,理想情况下,这就是主线程。 处理excel文件的代码是应该在另一个线程中的代码。
其次,如果您需要多个窗口,则第二个及后续窗口必须是Toplevel
实例,而不是Tk
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.