[英]How to bind mouse clicks to functions in all windows in Tkinter
[英]Tkinter bind mouse clicks to frame
我必須遺漏一些明顯的東西,我的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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.