当前位置: 代码网 > it编程>前端脚本>Python > python tkinter实现鼠标悬停提示

python tkinter实现鼠标悬停提示

2024年11月28日 Python 我要评论
展示效果全部代码和使用示例# _*_ coding:utf-8 _*_import tkinter as tkimport pyautoguiscreen_width, screen_height

展示效果

全部代码和使用示例

#  _*_ 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鼠标悬停内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com