2015-01-12 42 views
5

如果我在OS X上創建一個tkinter菜單,並嘗試用add_comand()向其添加菜單按鈕,則菜單中不顯示任何東西。如何使Menu.add_command()在Mac上的tkinter中工作?

如果下面的代碼在Ubuntu上運行,我會得到帶有兩個命令的菜單欄,分別標記爲「紅色」和「藍色」,用於更改窗口的背景顏色。

在OS X 10.10.1(Yosemite)上沒有出現按鈕。我知道我可以使用紅色和藍色命令製作下拉菜單,但在我的真實應用程序中,我寧願不這樣做。

from platform import python_version_tuple 

major = python_version_tuple()[0] 

if major == '3': 
    import tkinter as tk 
else: 
    import Tkinter as tk 

root = tk.Tk() 

fr = tk.Frame(root, height = 200, width = 200) 
fr.pack() 
menu = tk.Menu(root) 
root.configure(menu=menu) 
menu.add_command(label='Red', command=lambda:fr.configure(bg='red')) 
menu.add_command(label='Blue', command=lambda:fr.configure(bg='blue')) 

root.mainloop() 

你能告訴我怎麼做我想要的嗎?

+1

儘管有些系統會允許你這樣做,但它會導致你的應用程序的可用性很差,除非你非常小心地清楚哪些項目是菜單,什麼時候是按鈕。最好只在菜單欄上有下拉菜單。 –

回答

5

我不認爲你可以用OS X上的native(「Aqua」)Tk來做到這一點,你可能不應該嘗試。 OS X原生菜單不能像那樣工作,Tk會嘗試遵循Apple的Human Interface Guide for menus。你需要一個菜單​​欄,下拉菜單欄級聯

TkDocs網站有一個很好的介紹Tk menus and their platform differences.(您可以使用的OS X基於X11-TK,但不推薦,因爲蘋果不與OS X附帶的X11服務器,再和你的應用程序看起來和對於OS X用戶來說表現很奇怪)。