Re: [Python] gtk - importazione modulo finestra

2011-02-28 Per discussione Marco Giusti
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

2011-02-27 Per discussione Alessandro Dentella
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

2011-02-27 Per discussione Marco Fochesato
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