[Python] come chiudere in modo corretto le Window pygtk

Matteo Perini perini.matteo a gmail.com
Mer 23 Maggio 2012 12:56:30 CEST


Ciao a tutti,
Scusate la domanda banale ma sto cercando da un po di risolvere il 
seguente problema ma non ne vengo a capo.

Ho una applicazione con una finestra principale che contiene dei 
semplici pulsanti.
La pressione dei pulsanti mi fa aprire (a seconda del caso) una nuova 
Window che mi da' la possibilità di inserire del testo.
Fino a qui tutto ok.
Quando però chiudo la Window  e successivamente provo a riaprirla per 
inserire dei nuovi dati ottengo:

File "Gui.py", line 46, in on_btn_main_calib_clicked
self.main_calibration(self)
TypeError: 'gtk.Window' object is not callable

e quindi non riesco a riaprire la finestra

il codice della finestra in questione è:
     def main_calibration(self,widget,data=None):
         def calib1(self,entry):
             self.num = entry.get_text()
             print self.num

         self.main_calibration = gtk.Window(gtk.WINDOW_TOPLEVEL)
         self.main_calibration.set_position(gtk.WIN_POS_CENTER)
         self.main_calibration.set_title("Calibrazione")
         self.main_calibration.set_border_width(15)
         #self.main_calibration.connect("destroy", self.exit)
         hbox1 = gtk.HBox(True, 0)
         hbox2 = gtk.HBox(True, 0)
         vbox = gtk.VBox(True, 0)
         self.entry1 = gtk.Entry()
         self.entry1lab = gtk.Label("ciao")
         num=self.entry1.get_text()
         self.button1 = gtk.Button("Calibra")
         self.button1.connect("clicked",calib1, self.entry1)
         self.label1 = gtk.Label("Numero di acquisizioni valide:")


         hbox1.pack_start(self.label1, True, True, 5)
         hbox1.pack_start(self.entry1,True,True,5)

         hbox2.pack_start(self.button1, True, True, 5)
         vbox.pack_start(hbox1, True, False, 5)
         vbox.pack_start(hbox2, True, False, 5)
         self.main_calibration.add(vbox)
         self.main_calibration.show_all()
         gtk.main()


Se avete avuto la pazienza di leggere fino a qui vi sarete accorti che 
c'è una linea commentata:

#self.main_calibration.connect("destroy", self.exit)

questa chiude sia la Window voluta che la finestra principale (cosa che 
non deve accadere).
Ogni suggerimento su come risolvere questo piccolo problema è ben accetto.
Grazie a tutti
Matteo P



Maggiori informazioni sulla lista Python