繁体   English   中英

在python 2.7中管理2个Tkinter线程

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM