展示效果

全部代码和使用示例
# _*_ coding:utf-8 _*_
import tkinter as tk
import pyautogui
screen_width, screen_height = pyautogui.size()
class widgettip:
"""鼠标悬停提示"""
def __init__(self, widget, text):
self.widget = widget
self.text = text
self.tips_alpha = 1
self.tooltip = tk.stringvar()
self.tip_pos = 5
# 消息体
self.tooltip_window = tk.toplevel()
self.init_tips()
# 绑定鼠标事件
self.widget.bind("<enter>", self.enter)
self.widget.bind("<motion>", self.move)
self.widget.bind("<leave>", self.leave)
def init_tips(self):
"""初始化消息框"""
self.tooltip_window.attributes("-alpha", 0)
self.tooltip_window.attributes("-toolwindow", 1)
self.tooltip_window.wm_overrideredirect(true)
self.tooltip_window.attributes('-topmost', 100)
pad_x = 20 # 内边距 x
tk.label(self.tooltip_window,
textvariable=self.tooltip,
background="#ffffff",
justify=tk.left,
relief="solid",
borderwidth=0,
wraplength=screen_width - pad_x,
padx=pad_x, pady=10).pack()
def enter(self, event=none):
self.tooltip_window.lift()
if isinstance(self.text, (tk.stringvar, tk.intvar, tk.booleanvar, tk.doublevar)):
tips_text = str(self.text.get())
else:
tips_text = str(self.text)
self.tooltip.set(tips_text)
self.set_tooltip_window_geometry(event)
self.tooltip_window.attributes("-alpha", self.tips_alpha)
def move(self, event=none):
self.set_tooltip_window_geometry(event)
def leave(self, event=none):
self.tooltip_window.attributes("-alpha", 0)
self.set_tooltip_window_geometry(event)
def set_tooltip_window_geometry(self, event):
cost_length = event.x_root + self.tip_pos + self.tooltip_window.winfo_width() - screen_width
if cost_length < 0:
cost_length = 0
self.tooltip_window.geometry("+%d+%d" % (event.x_root + self.tip_pos - cost_length, event.y_root + self.tip_pos))
# 创建主窗口
root = tk.tk()
root.title("鼠标悬停提示")
var_str = tk.stringvar()
# 创建一个按钮并添加 tooltip
button = tk.button(root, text="鼠标放这")
button.pack(pady=20)
var_str.set('动态文本按钮')
button2 = tk.button(root, text=var_str.get())
button2.pack(pady=20)
var_str.set('这是一条动态文本提示语')
widgettip(button, "这是一条提示鼠标悬停提示信息")
widgettip(button2, var_str)
# 运行主循环
root.mainloop()到此这篇关于python tkinter实现鼠标悬停提示的文章就介绍到这了,更多相关python鼠标悬停内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论