[英]Python Tkinter - destroy window after time or on click
我有以下代码:
import tkinter as tk
from tkinter import messagebox
try:
w = tk.Tk()
w.after(3000, lambda: w.destroy()) # Destroy the widget after 3 seconds
w.withdraw()
messagebox.showinfo('MONEY', 'MORE MONEY')
if messagebox.OK:
w.destroy()
w.mainloop()
confirmation = 'Messagebox showed'
print(confirmation)
except Exception:
confirmation = 'Messagebox showed'
print(confirmation)
有没有不使用线程和捕获异常的更好的方法来做到这一点?
您可以使用if messagebox.OK:
但messagebox.OK
被定义为OK = "ok"
因此,您的if语句始终为true。 如果要检查用户是否单击了按钮,则需要获取showinfo
函数的返回值。
因此,您可以执行以下操作:
a = messagebox.showinfo('MONEY', 'MORE MONEY')
if a:
w.destroy()
甚至更短:
if messagebox.showinfo('MONEY', 'MORE MONEY'):
w.destroy()
当用户未单击任何内容时, w.destroy
不会运行(因此, w.destroy
已经由after
调用运行)。
总共:
import tkinter as tk
from tkinter import messagebox
w = tk.Tk()
w.withdraw()
w.after(3000, w.destroy) # Destroy the widget after 3 seconds
if messagebox.showinfo('MONEY', 'MORE MONEY'):
w.destroy()
confirmation = 'Messagebox showed'
print(confirmation)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.