как удалить или уничтожить ярлык в ткинтер? - PullRequest
0 голосов
/ 28 августа 2018

этот код 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))
# 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()

1 Ответ

0 голосов
/ 28 августа 2018

В коде, который вы предоставили, я полагаю, что исправление, которое вы ищете, заключается в изменении этого:

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...