2015-01-12 22 views
5

Se creo un menu tkinter su OS X e provo ad aggiungere un pulsante menu ad esso con add_comand(), nel menu non compare nulla.Come far funzionare Menu.add_command() in tkinter su Mac?

Se il codice seguente viene eseguito su Ubuntu, viene visualizzata una barra dei menu con due comandi denominati "Rosso" e "Blu" che modificano il colore di sfondo della finestra.

Su OS X 10.10.1 (Yosemite) i pulsanti non vengono visualizzati. So che posso creare un menu a discesa con i comandi Rosso e Blu, ma nella mia vera app preferirei non farlo.

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() 

Puoi dirmi come fare ciò che voglio?

+1

Mentre alcuni sistemi consentono di eseguire questa operazione, si ottiene un'utilità molto scarsa per la tua app, a meno che tu non sia molto attento a chiarire quali elementi sono i menu e i pulsanti. È meglio avere solo menu a discesa nella barra dei menu. –

risposta

5

Non penso che si possa fare ciò con il Tk nativo ("Aqua") su OS X e probabilmente non si dovrebbe provare. I menu nativi di OS X non funzionano così e Tk cerca di seguire il numero Human Interface Guide for menus di Apple. È necessario disporre di una barra dei menu con il menu a cascata cascate.

Il TkDocs sito ha una buona introduzione al Tk menus and their platform differences.potrebbe utilizzare un Tk X11 basati su OS X, ma non è raccomandato in quanto Apple non viene fornito server X11 più con OS X e la vostra applicazione apparirebbe e comportarsi in modo strano per gli utenti di OS X.)