5.1 tkinter 之 ToolTip 实例
2020-01-13 本文已影响0人
水之心
ToolTip
代码内容见我的 GitHub: tkinter_action。
效果图:

代码:
import sys
sys.path.append('../app')
from tools.tips import ToolTip
from tkinter import ttk, Tk
from tkinter import Toplevel, Canvas
from tkinter import StringVar
class Graph(Canvas):
def __init__(self, master, **kw):
super().__init__(master, **kw)
self.master = master
self._init_params()
self.bind("<Double-Button-1>", self.double_button1)
def _init_params(self):
'''内部参数的初始化'''
self.x, self.y = 0, 0
def update_cursor(self, event):
'''设定 鼠标光标的位置坐标 (x,y)'''
self.x = event.x
self.y = event.y
def _to_canvas_xy(self, cursor_x, cursor_y):
'''将窗口坐标系转换为画布坐标系'''
x = self.canvasx(cursor_x)
y = self.canvasy(cursor_y)
return x, y
def double_button1(self, event):
"""
双击鼠标左键的回调函数
参数
=========
event: 来自于 tkinter,有鼠标的 x,y 坐标属性
"""
self.update_cursor(event)
new_x, new_y = self._to_canvas_xy(self.x, self.y)
text = f"鼠标左键双击的光标的坐标为{(self.x, self.y)}, 画布位置 {(new_x, new_y)}"
tool_window = ToolTip(self, text=text)
root = Tk()
frame = ttk.Frame(root, width=100, height=100)
lb = ttk.Label(frame, text = '测试')
self = Graph(frame, background='blue')
self1 = Graph(frame, background='red')
frame.grid()
lb.grid(row=0, column=0)
self.grid(row=0, column=1)
self1.grid(row=0, column=2)
root.mainloop()