Toplevel 激活时跳过函数
Skip function when Toplevel is active
如果 Toplevel window 当前打开,我将尝试跳过此功能。这是为了避免用户向按钮发送垃圾邮件并创建十亿个额外通知 windows。那或者如果 Toplevel window 可以在指定的时间后自动关闭也可以。代码如下。非常感谢任何帮助,因为我是 Python 的新手。谢谢!
def pingClick():
os.system(
'-c -H ' + tkvar1.get() + ' -B ' + tkvar2.get() + ' -L ' + tkvar3.get() + ' -V ' + tkvar4.get() + ' -T log.log')
top = Toplevel()
top.title("Ping")
msg = Message(top, text=" - Notice - ")
msg.pack()
button = ttk.Button(top, text="Dismiss", command=top.destroy)
button.pack()
创建全局变量top = None
。当您创建 Toplevel()
时,首先检查 top
是否为 None
。如果不是 None
,则不要创建 window。当您单击按钮销毁 window 时,您必须使用 运行 函数将其设置回 top = None
。当您使用按钮 [X]
关闭 window 时,您也必须这样做
并且您可以使用top.after(3000, ping_destroy)
在3000毫秒(3秒)后关闭window
import tkinter as tk
# --- functions ---
def ping_destroy():
global top
if top is not None:
top.destroy()
top = None
def ping_click():
global top
if top is None:
#os.system('-c -H ' + tkvar1.get() + ' -B ' + tkvar2.get() + ' -L ' + tkvar3.get() + ' -V ' + tkvar4.get() + ' -T log.log')
top = tk.Toplevel()
top.title("Ping")
msg = tk.Message(top, text="Notice")
msg.pack()
button = tk.Button(top, text="Dismiss", command=ping_destroy)
button.pack()
top.wm_protocol('WM_DELETE_WINDOW', ping_destroy) # run `ping_destroy` when use button [X]
top.after(3000, ping_destroy) # close after 3000ms (3s)
# --- main ---
top = None
root = tk.Tk()
button = tk.Button(root, text='Ping', command=ping_click)
button.pack()
root.mainloop()
如果 Toplevel window 当前打开,我将尝试跳过此功能。这是为了避免用户向按钮发送垃圾邮件并创建十亿个额外通知 windows。那或者如果 Toplevel window 可以在指定的时间后自动关闭也可以。代码如下。非常感谢任何帮助,因为我是 Python 的新手。谢谢!
def pingClick():
os.system(
'-c -H ' + tkvar1.get() + ' -B ' + tkvar2.get() + ' -L ' + tkvar3.get() + ' -V ' + tkvar4.get() + ' -T log.log')
top = Toplevel()
top.title("Ping")
msg = Message(top, text=" - Notice - ")
msg.pack()
button = ttk.Button(top, text="Dismiss", command=top.destroy)
button.pack()
创建全局变量top = None
。当您创建 Toplevel()
时,首先检查 top
是否为 None
。如果不是 None
,则不要创建 window。当您单击按钮销毁 window 时,您必须使用 运行 函数将其设置回 top = None
。当您使用按钮 [X]
并且您可以使用top.after(3000, ping_destroy)
在3000毫秒(3秒)后关闭window
import tkinter as tk
# --- functions ---
def ping_destroy():
global top
if top is not None:
top.destroy()
top = None
def ping_click():
global top
if top is None:
#os.system('-c -H ' + tkvar1.get() + ' -B ' + tkvar2.get() + ' -L ' + tkvar3.get() + ' -V ' + tkvar4.get() + ' -T log.log')
top = tk.Toplevel()
top.title("Ping")
msg = tk.Message(top, text="Notice")
msg.pack()
button = tk.Button(top, text="Dismiss", command=ping_destroy)
button.pack()
top.wm_protocol('WM_DELETE_WINDOW', ping_destroy) # run `ping_destroy` when use button [X]
top.after(3000, ping_destroy) # close after 3000ms (3s)
# --- main ---
top = None
root = tk.Tk()
button = tk.Button(root, text='Ping', command=ping_click)
button.pack()
root.mainloop()