[英]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.