簡體   English   中英

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM