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

标签 python multithreading tkinter

我是一个 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")

关于Python+Tkinter,如何在独立于tk前端的后台运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42589372/

相关文章:

python - Tkinter 骰子滚筒

Emacs 中的 Python 解释器重复行

multithreading - 使用多核解决迷宫?

c++ - C++ 中的多线程应用程序和 OpenCV?

python - Tkinter .icursor(*arg) 奇怪的行为

Python Tkinter 刷新 Canvas

python - 可滚动框架未填满 Canvas

python - Databricks 仅打印大约 280 行数据

python - Django 模型和 Python 类属性

c# - 退出没有循环的线程