<br><div class="gmail_quote">2010/3/19 Antonio Fittipaldi <span dir="ltr"><<a href="mailto:moaiamorfo@python-it.org">moaiamorfo@python-it.org</a>></span><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Il 19 marzo 2010 13.10, Marco Bonifazi ha scritto:<br>
<div class="im">> Fai bene ad approfittarne ma non ho idea, ne avevo tonnellate di questi<br>
> Glade warning con le PyGtk (a proposito: non e' entrato di moda GtkBuilder?)<br>
<br>
</div>Sinceramente non ho mai ben capito la differenza fra libglade e GtkBuilder...<br>
<div class="im"><br></div></blockquote><div><br>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.<br>
<br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Una cosa: come faccio a parametrizzare mostra_fin_mes()? Vorrei<br>
passargli il testo da mostrare nella finestra.<br>
Ovviamente, se faccio cosė funziona:<br>
<br>
def mostra_fin_mes(self, widget, data="Foo."):<br>
self.fin_mes.format_secondary_text(data)<br>
<div class="im"> a = self.fin_mes.run()<br>
if a == gtk.RESPONSE_OK:<br>
self.fin_mes.hide()<br>
<br>
</div>Il problema č: come faccio a passare l'argomento dall'ambiente<br>
chiamante? 'pul_reimposta_clicked': self.mostra_fin_mes, nel<br>
dizionario di connessione dei segnali, non mi pare molto amichevole<br>
(non mi pare sia possibile passarvi parametri, e qui non servirebbe).<br>
Pensavo a un attributo di classe che mantenga il messaggio corrente da<br>
mostrare.<br></blockquote><div><br>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.<br>
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.<br>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.<br>
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.<br>
<br>In pratica avrei disaccoppiato e fatto qualcosa del tipo:<br><br><br><div style="margin-left: 40px;">
def my_signal_received(self, widget):<br> self.show_my_message_dialog("Testo che mi piace")<br><br><br> def show_my_message_dialog(self, message_text)<br> self.fin_mes.format_secondary_text(message_text)<br>
<br></div>
<div style="margin-left: 40px;" class="im"> a = self.fin_mes.run()<br>
if a == gtk.RESPONSE_OK:<br>
self.fin_mes.hide()</div><br> <br>Comunque alla fine sono tutte scelte progettuali, basate sulla tua realta', che ovviamente conosco poco.</div><br></div><br><br clear="all"><br>-- <br>Marco Bonifazi<br><a href="http://www.bonifazi.eu">http://www.bonifazi.eu</a><br>