我的画布对象是小部件的第一层。第二层是通过create_window方法放置在画布中的框架。如果我的鼠标太快,tkinter 无法检测到该事件。
def _tkinter_frame_position(self) -> tuple[float, float]:
x = self.width/2
y = self.height/2
return x, y
def _tkinter_frame_geometry(self) -> dict:
geometry = {'width': self.width-4,
'height': self.height-4}
return geometry`
MyFrame.bind(event, func)
def about_widget(self, event):
frame = event.widget
# Canvas, MyFrame, MyWidget
if isinstance(frame, Canvas):
print(True)
更改框架的背景颜色
from tkinter import Tk, Canvas, Frame
def where_am(event):
object = event.widget
print('typy: ', object)
app = Tk()
app.geometry('500x500')
canvas = Canvas(app, background='green', width=300, height=300) ; canvas.pack(expand=True)
frame = Frame()
canvas.create_window(150, 150, width=295, height=295, window=frame)
canvas.bind('<Enter>', where_am)
app.mainloop()
快速和缓慢地移动鼠标并检查结果