【发布时间】:2021-01-06 19:47:29
【问题描述】:
我用 tkinter 做了一个简单的工具提示并添加了淡入淡出效果,但是代码出现了问题:
import tkinter as tk
import time
class ToolTips():
def __init__(self,widget,text,triggerkey='<Enter>',releasekey='<Leave>'):
self.widget = widget
self.text = text
self.bg = '#ffffe0'
self.widget.bind(triggerkey,self.add)
self.widget.bind(releasekey,self.remove)
self.widget.bind('<ButtonPress>',self.remove)
def add(self,event):
self.master = tk.Toplevel(bg=self.bg)
self.master.geometry(f'+{event.x_root}+{event.y_root}')
self.master.overrideredirect(1)
self.master.attributes('-topmost',True)
self.frame = tk.Frame(self.master,bg=self.bg,highlightbackground="black", highlightcolor="black", highlightthickness=1)
self.frame.pack()
self.label = tk.Label(self.frame,text=self.text,bg=self.bg,justify=tk.LEFT)
self.label.pack(padx=1,pady=3)
def remove(self,*args):
alpha = self.master.attributes('-alpha')
if alpha > 0:
alpha -= 0.5
self.master.attributes('-alpha',alpha)
self.master.after(100,self.remove)
else:
self.master.destroy()
#USAGE OF CLASS
root = tk.Tk()
l = tk.Label(root,text='Hover',font=('hevletica',21))
l.pack()
l.focus_force()
obj = ToolTips(l,text='There is alot more to this? Are you curious?\nBla Bla...')
root.mainloop()
这里remove() 应该提供淡入淡出效果,但它不干净,有时如果您离开标签并输入标签的速度超过 100 毫秒,那么工具提示不会破坏并且会一直留在那里直到应用程序完全退出。那么是否有任何简单的方法(如果没有的话)来实现此工具提示的平滑淡入淡出。也请随时指出代码中的其他错误:)
答案here有淡入淡出效果,但是我的代码好像不能实现。
提前致谢:D
【问题讨论】:
标签: python tkinter widget fade