.: HosiriS :.

Informatica e non solo

Python, GTK e finestre multiple

Posted by hosiris su aprile 17, 2011

Come facciamo a gestire l’apertura di una finestra quando viene cliccato un pulsate su una finestra “principale”?
Per chi ha concetti di OOP potrebbe dire: basta istanziare un nuovo oggetto. Ed infatti è così.

Supponiamo di progettare le nostra due interfacce con Glade, chiamiamole test1.glade e test2.glade. La prima interfaccia avrà un pulsante “click” che aprirà la seconda interfaccia.

import pygtk
pygtk.require("2.0")
import gtk
import gtk.glade

class Test2:
    def __init__(self):
        self.gladefile2 = "test2.glade"
        self.test2 = gtk.glade.XML(self.gladefile2)
        self.window1 = self.test2.get_widget('window1')
        self.test2.signal_autoconnect(self)

    def OnTest2(self, data=None):
        self.window1.destroy()


class Test1:
    def __init__(self):
        self.gladefile = "test1.glade"
        self.test1 = gtk.glade.XML(self.gladefile)
        self.test1.signal_autoconnect(self)

    def main(self):
        gtk.main()

    def OnClick(self, data=None):
        t2 = Test2()

    def OnExit(self, data=None):
        gtk.main_quit()


if __name__ == "__main__":
    t = Test1()
    t.main()

Il codice è semplicissimo, ma notiamo come è possibile chiudere la seconda finestra senza interferire sul lavoro della prima! Questo perché abbiamo richiamato il metodo destroy dell’oggetto istanziato e non il main_quit di GTK.

Buon divertimento

Una Risposta to “Python, GTK e finestre multiple”

  1. […] Continua a Leggere […]

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

 
%d blogger cliccano Mi Piace per questo: