Skip to main content
 首页 » 编程设计

Python+Tkinter,如何在独立于tk前端的后台运行

2025年05月04日17kerrycode

我是一个 tkinter 菜鸟。

在后台运行长时间运行的进程的首选方式是什么,与我的 tkinter 弹出窗口(表单?)分开?

我在使用 tkinter 时阅读了有关多线程的不同内容,但找不到直接的“像这样做”。

明确地说,我需要的行为是,用户启动程序,tkinter 位弹出,说明进程已启动。用户可以在不影响其余进程的情况下关闭此弹出窗口。也许当该过程完成时,我可以抛出另一个 tkinter 弹出窗口。

如果 tkinter 对此过于矫枉过正,请随时提出更好的方法。

谢谢!

请您参考如下方法:

Joran Beasley有权利answer ,但事情过于复杂。

这是简单的版本:

class Worker(threading.Thread): 
    def run(self): 
        # long process goes here 
 
w = Worker() 
w.start() 
tkMessageBox.showinfo("Work Started", "OK started working") 
w.join() 
tkMessageBox.showinfo("Work Complete", "OK Done") 

编辑:这是它的一个工作示例:

import threading 
import time 
import tkMessageBox 
import Tkinter as tk 
root = tk.Tk() 
root.withdraw() 
 
class Worker(threading.Thread): 
    def run(self): 
        # long process goes here 
        time.sleep(10) 
 
w = Worker() 
w.start() 
tkMessageBox.showinfo("Work Started", "OK started working") 
root.update() 
w.join() 
tkMessageBox.showinfo("Work Complete", "OK Done")