我有一個菜單,當用戶將鼠標移開時,我想消失。該菜單包含一個Frame
,其中包含幾個Label
/Button
小部件。我可以檢測到用戶將他們的鼠標移出Label
/Button
,只需綁定這些事件的<Enter>
/<Leave
事件即可。但綁定到框架的相同事件從不觸發 - 我猜是因爲頂部的小部件掩蓋了框架,所以鼠標永遠不會進入它?檢測'<Enter>`和`<Leave>`在tkinter中的幀事件
他們的方式是讓事件傳播到包含Frame
?
window=tkinter.Tk()
menu_frm = tkinter.Frame(window, name="menu_frm")
lbl_1 = tkinter.Label(menu_frm, text="Label", name="lbl_1")
lbl_1.pack()
lbl_2 = tkinter.Label(menu_frm, text="Label", name="lbl_2")
lbl_2.pack()
menu_frm.pack()
# These two (per label and the number of labels is likely to grow) events fire
lbl_1.bind("<Enter>", lambda _: stayopenfunction())
lbl_1.bind("<Leave>", lambda _: closefunction())
lbl_2.bind("<Enter>", lambda _: stayopenfunction())
lbl_2.bind("<Leave>", lambda _: closefunction())
# These two events do not fire
menu_frm.bind("<Enter>", lambda _: stayopenfunction())
menu_frm.bind("<Leave>", lambda _: closefunction())
發佈代碼片段將有所幫助。 –
如果標籤完全覆蓋了框架,我不明白你爲什麼需要綁定到框架。你想發生什麼事情沒有發生?順便說一句,你可以簡化你的綁定語法,如果你喜歡:'lbl_1.bind(「」stayopenfunction)' –
saulspatz
@saulspatz我實際上有幾個標籤/按鈕(我還沒有決定是否我需要這兩種類型呢)和所以這些事件需要綁定到每一個 - 這也意味着,如果我想改變稱爲的功能,我必須確保我爲每一個改變它。 – Kvothe