我一定错过了一些明显的东西,我的 Tkinter 程序中有两个框架,每个框架在网格布局中都有一堆标签。我想将鼠标点击绑定到其中一个而不是另一个。我目前使用
root.bind("<Button-1>", mouse_function)
但如果我单击另一个框架也会触发。我假设使用
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)
当您绑定到根窗口时,该绑定适用于该根窗口中的所有小部件。这就是它为任一帧触发的原因。这是 tkinter 的标准行为。
当您将绑定移动到框架时,它停止工作,因为框架从未看到该事件。当您单击标签时,看到绑定的是标签,而不是框架(除非您单击标签之间的空间)
至少有三种方法可以解决这个问题。一是您可以将装订放在标签上而不是框架上。另一种方法是将绑定保留在根窗口上,但在函数内检查该窗口小部件是否是该框架的子窗口。
第三种解决方案涉及更改标签的绑定标签。有关深入的示例,请参阅此答案:https://stackoverflow.com/a/32771893/7432 https://stackoverflow.com/a/32771893/7432
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)