记录 鼠标悬停在控件上面显示提示信息,在控件上面移动,提示信息跟随移动。2024-08-14 CSDN
1、效果
上效果图!
在控件上面移动,提示信息也会跟随移动,直到移出控件范围。
2、代码
demo.py
import tkinter as tk
class TipBox:
def __init__(self, widget, text='默认信息', bg='#fafdc2'):
self.widget = widget
self.text = text
self.bg = bg
self.tipwindow = None
self.x = self.y = 0
# 绑定鼠标进入和离开事件
self.widget.bind("<Enter>", self.enter)
self.widget.bind("<Leave>", self.leave)
self.widget.bind("<Motion>", self.update_position)
def enter(self, e=None):
# 创建提示窗口
x = self.widget.winfo_rootx() + self.widget.winfo_width() // 2
y = self.widget.winfo_rooty() + self.widget.winfo_height()
self.tipwindow = tk.Toplevel(self.widget)
self.tipwindow.wm_overrideredirect(True) # 去边框
self.tipwindow.wm_attributes("-topmost", 1) # 置顶
self.tipwindow.wm_geometry("+%d+%d" % (x, y))
label = tk.Label(self.tipwindow, text=self.text, bg=self.bg, relief=tk.SOLID, borderwidth=1)
label.pack(ipadx=1)
def leave(self, e=None):
# 销毁提示窗口
if self.tipwindow:
self.tipwindow.destroy()
def update_position(self, e=None):
if self.tipwindow:
# 更新提示窗口的位置,使其跟随鼠标
x = e.x_root + 20
y = e.y_root + 20
# 更新窗口位置
self.tipwindow.geometry("+%d+%d" % (x, y))
root = tk.Tk()
button = tk.Button(root, text="把鼠标放上来看看")
button.pack(pady=20)
# 创建提示信息框
TipBox(button, "看,我就是提示信息的文字,哈哈哈!")
'''
转载请附上原文出处;能帮助到你,请留下一个赞,谢谢!
'''
root.mainloop()