Python Tkinter将鼠标单击绑定到框架

Python Tkinter将鼠标单击绑定到框架,python,tkinter,Python,Tkinter,我肯定错过了一些明显的东西,我的Tkinter程序中有两个框架,每个框架在网格布局中都有一堆标签。我想把鼠标夹绑在其中一个上,而不是另一个。我目前使用 root.bind("<Button-1>", mouse_function) 当您绑定到根窗口时,该绑定将应用于该根窗口中的所有小部件。这就是为什么它会为任一帧触发。这是tkinter的标准行为 将绑定移动到帧时,它停止工作,因为帧从未看到事件。单击标签时,看到绑定的是标签,而不是框架(除非单击标签之间的空格) 至少有三种方法可以

我肯定错过了一些明显的东西,我的Tkinter程序中有两个框架,每个框架在网格布局中都有一堆标签。我想把鼠标夹绑在其中一个上,而不是另一个。我目前使用

root.bind("<Button-1>", mouse_function)

当您绑定到根窗口时,该绑定将应用于该根窗口中的所有小部件。这就是为什么它会为任一帧触发。这是tkinter的标准行为

将绑定移动到帧时,它停止工作,因为帧从未看到事件。单击标签时,看到绑定的是标签,而不是框架(除非单击标签之间的空格)

至少有三种方法可以解决这个问题。一个是,你可以把标签而不是框架上的绑定。另一种方法是将绑定保留在根窗口上,但在函数中检查小部件是否是该帧的子项


第三种解决方案涉及更改标签的绑定标记。有关详细示例,请参见以下答案:

谢谢,这部分工作正常,但现在我无法获得正常运行的命令,为此我提出了一个新问题。相关:
schedule_frame.bind("<Button-1>", mouse_function)
def mouse_function(event):
    y = event.widget.grid_info()['row']
    x = event.widget.grid_info()['column'] 
    widgets[(y, x)].configure(state="active")
    shiftSelection(y,x)