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