此tkinter代码没有小部件,只是一个标签,因此它只在屏幕上显示一个文本,因此我想在certian时间之后销毁或删除该标签!,当方法label.after( 1000,label.destroy)不起作用?
import tkinter, win32api, win32con, pywintypes
label = tkinter.Label(text='Text on the screen', font=('Times New Roman','80'), fg='black', bg='white')
label.master.overrideredirect(True)
label.master.geometry("+250+250")
label.master.lift()
label.master.wm_attributes("-topmost", True)
label.master.wm_attributes("-disabled", True)
label.master.wm_attributes("-transparentcolor", "white")
hWindow = pywintypes.HANDLE(int(label.master.frame(), 16))
# http://msdn.microsoft.com/en-us/library/windows/desktop/ff700543(v=vs.85).aspx
# The WS_EX_TRANSPARENT flag makes events (like mouse clicks) fall through the window.
exStyle = win32con.WS_EX_COMPOSITED | win32con.WS_EX_LAYERED | win32con.WS_EX_NOACTIVATE | win32con.WS_EX_TOPMOST | win32con.WS_EX_TRANSPARENT
win32api.SetWindowLong(hWindow, win32con.GWL_EXSTYLE, exStyle)
label.pack()
label.after(1000 , lambda: label.destroy()) #doesn't work anyway..
label.mainloop()
答案 0 :(得分:1)
在您提供的代码中,我相信您正在寻找的解决方案是对此进行更改:
label.after(1000 , lambda: label.destroy())
对此:
label.after(1000 , label.master.destroy)
您需要销毁label.master
(我想这实际上是一个根窗口),因为如果不这样做,您最终会在屏幕上看到一个不透明的大盒子。
那表示我不确定为什么您要用这种方式编写应用程序。我想它可以工作,但我实际上并不知道您可以这样做,但我个人仍然会使用根窗口来编写它。
import tkinter as tk
root = tk.Tk()
label = tk.Label(root, text='Text on the screen', font=('Times New Roman','80'), fg='black', bg='white')
label.pack()
root.overrideredirect(True)
root.geometry("+250+250")
root.wm_attributes("-topmost", True)
root.wm_attributes("-disabled", True)
root.wm_attributes("-transparentcolor", "white")
root.after(1000 , root.destroy)
root.mainloop()
答案 1 :(得分:0)
import tkinter
import time
root =Tk()
label = Label(root, text="Text on the screen", font=('Times New Roman', '80'), fg="black", bg="white")
time.sleep(1000)
label.destroy()
root.mainloop()