ユーザーがマウスを離したときに消えたいメニューがあります。メニューは、に数個のLabel
/Button
ウィジェットが含まれています。私はLabel
/Button
からマウスを動かしているユーザーを検出して、それらのイベントの<Enter>
/<Leave
に単純にバインドして検出できます。しかし、フレームのための同じイベントへのバインディングは決して誘発しない - 私は、上のウィジェットがフレームを覆い、マウスがそれに入ることはないので推測する?tkinterのフレームに「<Enter>」と「<Leave>」イベントが検出されました
これらのイベントは、含まれているイベントに伝播させる方法ですか。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