<br><div class="gmail_quote">2010/3/19 Antonio Fittipaldi <span dir="ltr">&lt;<a href="mailto:moaiamorfo@python-it.org">moaiamorfo@python-it.org</a>&gt;</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">&gt; Fai bene ad approfittarne ma non ho idea, ne avevo tonnellate di questi<br>
&gt; Glade warning con le PyGtk (a proposito: non e&#39; 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&#39;era (o se c&#39;era non me ne sono accorto). Ma da quanto ho capito, ora sembra sia meglio (=sara&#39; 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=&quot;Foo.&quot;):<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&#39;argomento dall&#39;ambiente<br>
chiamante? &#39;pul_reimposta_clicked&#39;: 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 &quot;def mostra_fin_mes(self, widget)&quot;) 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&#39;avvio di una MessageDialog all&#39;interno di una callback di un altro evento.<br>
In genere quindi dividevo tra funzioni &quot;callback&quot;, intese come funzioni che ricevono segnali/eventi (usando il participio passato nel nome della funzione), e funzioni &quot;agenti&quot; (usando l&#39;imperativo) ossia che creavano o modificavano attivamente l&#39;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(&quot;Testo che mi piace&quot;)<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&#39;, 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>