Creazione di un menu per la Guida

Transcript

Creazione di un menu per la Guida
Interfacce con Tkinter
225
Le opzioni di menu vengono aggiunte utilizzando i metodi tkinter.Menu.add_command(),
tkinter.Menu.add_checkbutton() e tkinter.Menu.add_radiobutton(), anche se per Gravitate utilizziamo in realtà soltanto il primo. Per aggiungere i separatori si utilizza
tkinter.add_separator(). L’attributo underline è ignorato su OS X, e su Windows le
sottolineature sono visibili soltanto se impostate come tali, o se l’utente tiene premuto
il tasto Alt. Per ciascuna opzione di menu specifichiamo il testo di etichetta, il carattere
da sottolineare, il comando da eseguire quando viene richiamata l’opzione di menu e
l’icona del menu (attributo image). L’attributo compound indica come gestire icone e testo:
tk.LEFT mostra entrambi, con l’icona a sinistra. Abbiamo anche impostato un tasto di
scelta rapida; per esempio, per attivare l’opzione New del menu File l’utente può premere
Ctrl+N su Linux e Windows, oppure .N su OS X.
Su OS X le opzioni di menu Preferences e Quit dell’applicazione corrente sono visualizzate nel menu dell’applicazione (che si trova alla destra del menu mela, prima del
menu dei file dell’applicazione). Per l’integrazione con OS X utilizziamo il metodo
tkinter.Tk.create-command() per associare ::tk::mac::ShowPreferences ed exit ai metodi
corrispondenti di Gravitate. Per altre piattaforme aggiungiamo Preferences e Quit come
normali opzioni di menu.
Una volta che il menu dei file è stato interamente riempito, lo aggiungiamo come menu
‘a cascata’ (cioè come sottomenu) della barra dei menu.
def menu_modifier():
return "Command" if mac() else "Ctrl"
Questa funzione di TkUtil/__init__.py è utilizzata per il testo nei menu. La parola
"Command" è gestita in modo particolare su OS X e appare come il simbolo punto (.).
Creazione di un menu per la Guida
Il menu della guida dell’applicazione ha soltanto due opzioni: Help e About. Tuttavia,
nel caso di OS X entrambe queste opzioni sono gestite in modo diverso da Linux e
Windows, perciò il codice deve tenere conto delle differenze.
def create_help_menu(self):
helpMenu = tk.Menu(self.menubar, name="help")
if TkUtil.mac():
self.master.createcommand("tkAboutDialog", self.about)
self.master.createcommand("::tk::mac::ShowHelp", self.help)
else:
helpMenu.add_command(label=HELP, underline=0,
command=self.help, image=self.images[HELP],
compound=tk.LEFT, accelerator="F1")
helpMenu.add_command(label=ABOUT, underline=0,
command=self.about, image=self.images[ABOUT],
compound=tk.LEFT)
self.menubar.add_cascade(label=HELP, underline=0,
menu=helpMenu)
Iniziamo creando il menu della guida con il nome "help". Tale nome è ignorato su
Linux e su Windows ma garantisce che, su OS X, il menu si integri in maniera corretta con la guida di sistema. Se lavoriamo su un sistema OS X, utilizziamo il metodo tkinter.Tk.createcommand() per associare il Tcl/Tk tkAboutDialog e i comandi
python_07.indd 225
12/3/2013 12:47:39 PM