我一直在寻找一种在OSX上显示右键单击弹出菜单的方法。
到目前为止,我的所有尝试均未成功。相同的代码将在Linux VM(Ubuntu)上正常工作。
为了论证,我复制了这两页中编写的代码,并尝试在我的计算机上运行它们。
tkinter app adding a right click context menu?
http://effbot.org/zone/tkinter-popup-menu.htm
两者都无法像我期望的那样在OSX上工作,但是当我在Ubuntu VM上运行它们时它们却能工作。
我使用的计算机是运行OSX 10.6.8的Mac Mini4,1。
有没有其他人经历过这种情况,并且有可行的解决方法?
python大神给出的解决方案
由于奇怪的历史原因,右键在Mac上是2,而在Unix和Windows上是3。
这是在我的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()