Re: [Python] gtk - importazione modulo finestra
On Sun, Feb 27, 2011 at 09:20:00PM +0100, Marco Fochesato wrote: ... > Problema: > la finestra la prima volta che la chiamo, si comporta bene. > Se la chiudo e la richiamo, si apre senza farmi vedere i widget > (TextView) al suo interno. > > Ho provato a fare il reload del modulo... allora la cosa funziona.. solo > che al primo avvio la finestra appare doppia.. chiudo i due doppioni, > richiamo e ne esce una sola. Giusta. Il codice di un modulo viene eseguito solo una volta all'atto della sua importazione. Se importi un modulo due volte (`import finestra; import finestra`) i comportamenti sono differenti: nel primo caso i normali passi vengono eseguiti (ricerca del modulo, traduzione in bytecode, eseguzione del codice, ecc.) ed il modulo viene salvato in `sys.modules`, nel secondo import il modulo viene trovato in `sys.modules` ed il codice non viene eseguito. Per testare questo comportamento prova ad eseguire il test allegato. Senza vedere il codice è quasi un tirare ad indovinare, ma è possibile che sia questo il tuo problema. ciao m. -- In se stesso il toscano ha fiducia, pur senza orgoglio, ma negli uomini, nella pianta uomo, no. In fondo, credo che disprezzi il genere umano, tutti gli esseri umani, maschi e femmine. E non per la loro cattiveria, (al toscano non fan paura i cattivi), ma per la loro stupidità. Degli stupidi il toscano ha ribrezzo, perché non si sa mai che cosa possa venir fuori da uno stupido. Guarda, dico, come il toscano cammina: e ti avvedrai che cammina come se stesse sempre sulle sue, come uomo che sa, per antica esperienza, che la cosa più aborrita al mondo è l'intelligenza, e la più insidiata. -- Curzio Malaparte, Maledetti toscani print __name__ + ": ciao, sono finestra" print __name__ + ": import del modulo finestra" import finestra print __name__ + ": import del modulo finestra2" import finestra2 print __name__ + ": ciao, sono finestra 2" print __name__ + ": import del modulo finestra2" import finestra2 ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] gtk - importazione modulo finestra
On Sun, Feb 27, 2011 at 09:20:00PM +0100, Marco Fochesato wrote: > Ho creato in un modulo "finestra.py", una finestra: > > spe = gtk.Window(gtk.WINDOW_TOPLEVEL) > spe.show_all() > > Poi, la importo nel modulo principale, così: > > from finestra import spe > > Allora, non riporto il codice, ma la finestra, all'interno del suo > modulo, si interfaccia ad un database, carica dei dati, e me li fa > vedere in una Textview che è al suo interno. > > L'apertura della finestra viene richiamata mediante funzione collegata > ad un bottone del modulo principale. > > Problema: > la finestra la prima volta che la chiamo, si comporta bene. > Se la chiudo e la richiamo, si apre senza farmi vedere i widget > (TextView) al suo interno. Non è chiaro cosa intendi con "chiudo", intendi che la distruggi via Window manager ad esempio cliccando sulla 'x'? In questo caso dipende da che callback chiami per l'evento 'delete-event' o eventuamente 'destroy'. Cosa intendi poi per "richiamarla"? spe.present()? Se quello che vuoi fare è solo nascondere la finestra fino al momento che la vuoi nuovamente ti consiglio di usare .hide() e .present() e di collegare .hide() alla callback del 'delete-event'. Se non ho compreso bene ti consiglio di fare un *piccolo* esempio che mostri il problema. sandro *:-) -- Sandro Dentella *:-) http://www.reteisi.org Soluzioni libere per le scuole http://sqlkit.argolinux.orgSQLkit home page - PyGTK/python/sqlalchemy ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] gtk - importazione modulo finestra
Ho creato in un modulo "finestra.py", una finestra: spe = gtk.Window(gtk.WINDOW_TOPLEVEL) spe.show_all() Poi, la importo nel modulo principale, così: from finestra import spe Allora, non riporto il codice, ma la finestra, all'interno del suo modulo, si interfaccia ad un database, carica dei dati, e me li fa vedere in una Textview che è al suo interno. L'apertura della finestra viene richiamata mediante funzione collegata ad un bottone del modulo principale. Problema: la finestra la prima volta che la chiamo, si comporta bene. Se la chiudo e la richiamo, si apre senza farmi vedere i widget (TextView) al suo interno. Ho provato a fare il reload del modulo... allora la cosa funziona.. solo che al primo avvio la finestra appare doppia.. chiudo i due doppioni, richiamo e ne esce una sola. Giusta. Marco ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python