Python Tkinter - 在一段时间后或点击后销毁 window
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 语句始终为真。如果要检查用户是否单击了按钮,则需要获取 showinfo
函数的 return 值。
所以你可以这样做:
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)
我有以下代码:
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 语句始终为真。如果要检查用户是否单击了按钮,则需要获取 showinfo
函数的 return 值。
所以你可以这样做:
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)