[Python] menu a tendina
Enrico 'Henryx' Bianchi
henryx_b a yahoo.it
Lun 29 Gen 2007 22:34:28 CET
lorenzo wrote:
> 1) non conosco la lingua inglese e molti manuali non esistono in italiano
> 2) l'help di python è in inglese
>
A questi due quesiti ti rispondo semplicemente: http://www.python.it
sezione documentazione (tra parentesi, come hai fatto ad iscriverti alla
lista e non notare quella sezione?)
> 3)nelle introduzioni che ho letto non si parla mai di interfacce grafiche
> sbirciando qua e la tra i codici sono riuscito a fare il programmino allegato
>
Il problema delle interfacce grafiche in Python e` che non ne esiste una
standard. Certo, TKinter e` distribuita assieme alla libreria standard,
ma non per questo e` l'unica disponibile e presa in considerazione
(soprattutto per il fatto che e` limitata e poco integrata con il resto
del sistema). Oltre a TKinter, dai uno sguardo a PyGTK, PyQT e wxPython
(personalmente preferisco la prima, ma sono gusti)
> se qualcuno ha un pò di tempo e voglia potrebbe spiegarmi come posso fare a
> creare un menu in una finestra e a metterci un immagine
>
Attualmente sto studiando anch'io i menu` in PyGTK, e devo dire che, una
volta capito il meccanismo, e` piu` semplice del previsto. Tra l'altro,
la stessa metodologia puo` essere utilizzata per creare toolbar:
import gtk
import pygtk
def create_window_with_menus():
window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.set_border_width(10)
window.resize(600, 400)
vbox = gtk.VBox(False, 0)
self.__window.add(vbox)
s = Signals() # e` una mia classe contenente i segnali da agganciare
alle voci del menu`
s.set_window(window)
ui = gtk.UIManager()
menu = '''<ui>
<menubar name="MenuBar">
<menu action="File">
<menuitem action="Quit"/>
</menu>
<menu action="Edit">
<menuitem action="Preferences"/>
</menu>
</menubar>
</ui>'''
accel_group = ui.get_accel_group()
window.add_accel_group(accel_group)
action_group = gtk.ActionGroup('Main')
action_group.add_actions([('Quit', gtk.STOCK_QUIT, '_Quit', None,
'Quit the Program', s.close),
('File', None, '_File'),
('Edit', None, '_Edit'),
('Preferences', gtk.STOCK_PREFERENCES,
'_Preferences',
'<Control>p', 'Edit preferences',
s.edit_prefs)])
ui.insert_action_group(action_group, 0)
ui.add_ui_from_string(menu)
menu_bar = ui.get_widget('/MenuBar')
vbox.pack_start(menu_bar, False)
window.show_all()
gtk.main()
class Signals(object):
def set_window(self, window):
self.__window = window
def edit_prefs(self, widget, data=None):
print 'Edit Preferences'
def close(self, widget, data=None):
gtk.main_quit()
if __name__ == '__main__':
create_window_with_menus()
> P.S io conosco la lib tkinter ma da tutte le parti trovo scritto che non
> esiste una traduzione è vero?
>
Personalmente non ti so dire se esiste una traduzione della
documentazione riguardante l'utilizzo di TKinter, ma ti so dire che c'e`
un tutorial scritto da un italiano per PyGTK (anche se, a mio avviso, e`
incompleto in alcune parti)
> grazie di tutto (mi avevano detto che il basic non era un gran che maq questo
> è un casino!!)
>
Il problema non e` dato dal fatto che Python e` un casino, ma che Python
induce ad una metodologia differente di ragionare sul concetto di
programmazione (e.g. programmazione funzionale e ad oggetti mischiata
con programmazione imperativa, uso dell'indentazione per definire le
strutture del programma, ecc.). Una volta fatta l'abitudine a questo, ti
accorgerai che Python e` parecchio semplice (probabilmente - ma qui la
dico e qui la nego - si potrebbe considerare il Pascal del 2000)
Enrico
Maggiori informazioni sulla lista
Python