簡體   English   中英

如何在Tkinter中將彈出菜單綁定到標簽

[英]How to bind the pop up menu to a label in Tkinter

我想限制可以觸發彈出菜單的區域

我當前的代碼允許在用戶右鍵單擊時在tkinter窗口中的任何位置觸發彈出菜單

from tkinter import *

root = Tk()

w = Label(root, text="Right-click to display menu", width=40, height=20)
w.pack()


popup = Menu(root, tearoff=0)
popup.add_command(label="Next") # , command=next) etc...
popup.add_command(label="Previous")
popup.add_separator()
popup.add_command(label="Home")

def do_popup(event):

    try:
        popup.tk_popup(event.x_root, event.y_root, 0)
    finally:
        popup.grab_release()

w.bind("<Button-3>", do_popup)

b = Button(root, text="Quit", command=root.destroy)
b.pack()

mainloop()

我希望僅在用戶右鍵單擊標簽“右鍵單擊以顯示菜單”時觸發彈出菜單

您的代碼完全按照設計工作。 您已經創建了一個非常大的標簽窗口小部件(寬40個字符,高20個字符或大約350x325像素,具體取決於您的系統字體和分辨率設置)。 因此,盡管您認為自己在標簽之外單擊,但並不是因為它占據了整個窗口。

要了解我的意思,請為您的標簽添加獨特的背景色。 例如:

w = Label(root, text="Right-click to display menu", width=40, height=20, background="pink")

上面的結果是一個看起來像下圖的窗口。 您單擊的任何地方,粉紅色都是標簽的一部分,因此將顯示菜單。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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