2015-06-05 93 views
1

我一直在尋找一種方法在OSX上顯示右鍵單擊彈出菜單。 到目前爲止,我所有的嘗試都失敗了。相同的代碼在Linux VM(Ubuntu)上可以正常工作。Tkinter在OSX上右鍵單擊彈出菜單無響應

爲了參數的緣故,我複製了寫在這兩頁上的代碼,並試圖在我的機器上運行它們。

tkinter app adding a right click context menu?

http://effbot.org/zone/tkinter-popup-menu.htm

既不是我希望他們在OSX的方式工作過,但是當我的Ubuntu虛擬機上運行他們,他們做的。

我使用的機器是運行OSX 10.6.8的Mac Mini 4.1。 有沒有其他人經歷過這種情況,有沒有可行的解決方法?

回答

4

對於奇數歷史的原因,右按鈕是按鈕 Mac上,但在UNIX和Windows 。

這裏是我的OSX箱工作的例子:

try: 
    # python 2.x 
    import Tkinter as tk 
except ImportError: 
    # python 3.x 
    import tkinter as tk 

class Example(tk.Frame): 
    def __init__(self, *args, **kwargs): 
     tk.Frame.__init__(self, *args, **kwargs) 

     self.popupMenu = tk.Menu(self, tearoff=0) 
     self.popupMenu.add_command(label="One", command=self.menu_one) 
     self.popupMenu.add_command(label="Two", command=self.menu_two) 
     self.popupMenu.add_command(label="Three", command=self.menu_three) 

     self.bind("<Button-2>", self.popup) 

    def menu_one(self): 
     print "one..." 

    def menu_two(self): 
     print "two..." 

    def menu_three(self): 
     print "three..." 

    def popup(self, event): 
     self.popupMenu.post(event.x_root, event.y_root) 

if __name__ == "__main__": 
    root =tk.Tk() 
    frame = Example(root, width=200, height=200) 
    frame.pack(fill="both", expand=True) 
    root.mainloop() 
+0

在Mac OSX(可能還有其他平臺),你需要添加'self.config(菜單= self.popupMenu)'對於這工作。 –

+0

@ThomasAntony:不,除非拋出錯誤,否則不會做任何事情。在這種情況下,'self'是一個框架,框架沒有'menu'選項。 。此外,問題是關於上下文敏感(「右鍵單擊」)菜單,而不是菜單欄。 –

+0

另一件事是窗口必須專注於'後''工作。 –

相關問題