如何在 TkInter 中实现"processing request"消息



我正在尝试实现一个弹出窗口,当操作在后台进行时,它应该显示在主窗口上。按下下面代码中的按钮会导致GUI冻结10秒而不显示任何消息,并最终使按钮变为绿色。冻结是正常的,但我希望在10秒内显示弹出窗口。任何帮助都将不胜感激!提前感谢!

import tkinter as tk
import time
class GUI(tk.Tk):
def __init__(self):
super().__init__()
self.button1 = tk.Button(text="Start", command=self.make_green)
self.button1.pack()

def popup(self):
tl = tk.Toplevel(self)
tl.transient()
tk.Label(tl, text="Painting green").pack()
tl.grab_set()
return tl
def make_green(self):
wait_popup = self.popup()
time.sleep(10)
self.button1.config(bg="green")
wait_popup.destroy()
a = GUI()
a.mainloop()

您可以在代码中使用self.update((来显示弹出窗口。

import tkinter as tk
import time
class GUI(tk.Tk):
def __init__(self):
super().__init__()
self.button1 = tk.Button(text="Start", command=self.make_green)
self.button1.pack()

def popup(self):
tl = tk.Toplevel(self)
tl.transient()
tk.Label(tl, text="Painting green").pack()
self.update()
tl.grab_set()
return tl
def make_green(self):
wait_popup = self.popup()
time.sleep(10)
self.button1.config(bg="green")
wait_popup.destroy()
a = GUI()
a.mainloop()

或者可以使用线程。

从线程导入线程开始。

from threading import Thread

然后做一个新的方法

def thread_it(self):
return Thread(target=self.make_green, daemon=True).start()

并更新您的按钮的命令

self.button1 = tk.Button(text="Start", command=self.thread_it)

相关内容

最新更新