繁体   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