【问题标题】:Tkinter bind mouse clicks to frameTkinter 将鼠标点击绑定到框架
【发布时间】:2015-11-16 18:18:33
【问题描述】:

我一定遗漏了一些明显的东西,我的 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)

【问题讨论】:

标签: python tkinter


【解决方案1】:

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

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

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

第三种解决方案涉及更改标签的绑定标签。有关深入示例,请参阅此答案:https://stackoverflow.com/a/32771893/7432

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-25
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多