python - 如何在 tkinter 中删除或销毁标签?
问题描述
这个 Tkinter 代码没有小部件,只有一个标签,所以它只在屏幕上显示一个文本,所以我想在一段时间后销毁或删除标签!。当方法 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))
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()
解决方案
在您提供的代码中,我相信您正在寻找的解决方法是改变这一点:
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()
推荐阅读
- spotfire - Spotfire 案例声明
- javascript - ReactStrap 模态关闭图标未在模态中显示以及如何将标题与其他标签一起使用
- jquery - 有没有办法在上下滚动时始终动态对齐中心的 div?
- cloudera - 在 Impala 中将 DoubleType 转换为时间戳
- ios - 删除 Results 类型数组的元素(Realm 类型)
- ruby-on-rails - 如何在测试运行期间将 Rails 固定装置重新加载到数据库中
- java - 我需要在字符串数组中打印所有唯一单词但不确定如何
- c# - '有效载荷数据类型 MSG_TYPE 的集合类型不存在。'
- php - Jquery + Ajax 不能正常工作,为什么?
- r - R闪亮的应用程序错误:gsub函数中用于花括号的意外字符串常量