2010/3/19 Antonio Fittipaldi <moaiamo...@python-it.org> > Il 19 marzo 2010 13.10, Marco Bonifazi ha scritto: > > Fai bene ad approfittarne ma non ho idea, ne avevo tonnellate di questi > > Glade warning con le PyGtk (a proposito: non e' entrato di moda > GtkBuilder?) > > Sinceramente non ho mai ben capito la differenza fra libglade e > GtkBuilder... > > Quando iniziai a usare libglade, GtkBuilder non c'era (o se c'era non me ne sono accorto). Ma da quanto ho capito, ora sembra sia meglio (=sara' meglio mantenuto) GtkBuilder.
> Una cosa: come faccio a parametrizzare mostra_fin_mes()? Vorrei > passargli il testo da mostrare nella finestra. > Ovviamente, se faccio così funziona: > > def mostra_fin_mes(self, widget, data="Foo."): > self.fin_mes.format_secondary_text(data) > a = self.fin_mes.run() > if a == gtk.RESPONSE_OK: > self.fin_mes.hide() > > Il problema è: come faccio a passare l'argomento dall'ambiente > chiamante? 'pul_reimposta_clicked': self.mostra_fin_mes, nel > dizionario di connessione dei segnali, non mi pare molto amichevole > (non mi pare sia possibile passarvi parametri, e qui non servirebbe). > Pensavo a un attributo di classe che mantenga il messaggio corrente da > mostrare. > A me piaceva lasciare le callback con il numero dei parametri che richiedevano (nel tuo caso avrei lasciato "def mostra_fin_mes(self, widget)") per poi utilizzare invece degli attributi di classe. Considera anche che non sei obbligato a inserire il testo della MessageDialog proprio appena prima che tu la lanci, ma anche, che so, in fase di creazione della relativa View che stai gestendo. Anzi, a veder meglio il codice, probabilmente non avrei inserito il codice per l'avvio di una MessageDialog all'interno di una callback di un altro evento. In genere quindi dividevo tra funzioni "callback", intese come funzioni che ricevono segnali/eventi (usando il participio passato nel nome della funzione), e funzioni "agenti" (usando l'imperativo) ossia che creavano o modificavano attivamente l'interfaccia. In pratica avrei disaccoppiato e fatto qualcosa del tipo: def my_signal_received(self, widget): self.show_my_message_dialog("Testo che mi piace") def show_my_message_dialog(self, message_text) self.fin_mes.format_secondary_text(message_text) a = self.fin_mes.run() if a == gtk.RESPONSE_OK: self.fin_mes.hide() Comunque alla fine sono tutte scelte progettuali, basate sulla tua realta', che ovviamente conosco poco. -- Marco Bonifazi http://www.bonifazi.eu
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python