【问题标题】:Join Threads running inside Tkinter.Tk().mainloop加入在 Tkinter.Tk().mainloop 中运行的线程
【发布时间】:2020-05-06 17:09:20
【问题描述】:

我正在使用 tkinter 并在我的 Windows 类的 __init__() 方法中工作,我在其中启动了两个执行方法的线程。

我的问题是我不知道在哪里调用.join(),这样一旦通过Tk().destroy() 方法销毁主窗口,这些线程就不会继续执行。

【问题讨论】:

  • 调用 .join() 以便这些线程不会继续.join() 不会终止 Thread。阅读terminate an Thread controlled
  • 创建线程时,在启动它们之前将它们设置为“守护进程”。这将导致它们在主线程退出时自动终止。 Thread documentation中提到了。

标签: python multithreading tkinter


【解决方案1】:

Tkinter.Tk().mainloop() 阻止程序在屏幕更新时继续运行。调用Tk().destroy() 后,它会解锁并正常继续程序,允许您在那里调用thread.join()。这里作为代码执行后的演示:

from tkinter import Tk

root = Tk()

def f():
    root.destroy()

root.after(3000,f)
root.mainloop()
print("Join Thread Here")

【讨论】:

    猜你喜欢
    • 2019-11-14
    • 1970-01-01
    • 2021-10-08
    • 2021-01-27
    • 1970-01-01
    • 2020-04-07
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多