簡體   English   中英

Python Tkinter-時間或點擊后銷毀窗口

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM