Tkinter 无法检测到事件

问题描述 投票:0回答:1

我的画布对象是小部件的第一层。第二层是通过create_window方法放置在画布中的框架。如果我的鼠标太快,tkinter 无法检测到该事件。

enter image description here

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)

更改框架的背景颜色

tkinter events canvas enter mainloop
1个回答
0
投票
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()

快速和缓慢地移动鼠标并检查结果

© www.soinside.com 2019 - 2024. All rights reserved.