Zweites Fenster lässt sich nur einmal öffnent

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
bmh1980
gelöscht
Beiträge: 60
Registriert: Montag 26. Januar 2004, 17:13
Kontaktdaten:

Hallo.

Ich habe gerade ein GTK-2 GUI mit Glade-2 erstellt. In diesem GUI, bzw. in der Glade-Datei sind mehrere Fenster enthalten.

Mit dem Öffnen der Unterfenster habe ich jetzt Probleme. Oder besser gesagt mit dem Schließen der Fenster.

Wenn ich die Fenster über einen Button schließe, kann ich die Fenster ohne Probleme ein weiteres Mal öffnen.

Dazu benutze ich diesen Code.

Code: Alles auswählen

# Oeffne das Unterfenster
def on_button3_clicked(*args):
    window8.show()

# Schliesse das Unterfenster
def on_button19_clicked(*args):
    window8.hide()
Wenn ich eines der Unterfenster aber über das X vom Windowmanager schließe, lässt sich das Unterfenster nicht mehr erzeugen.

Ich weiß, dass ich etwas übersehe. Aber was?

Kann mir hier jemand weiterhelfen?

Marcus
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi bmh1980,

mit show wird kein fenster erzeugt, sondern nur angezeigt. Falls auf das Ereignis "Click auf das Closewidget" ein window_destroy erfolgt, kann natürlich das Fenster nicht mehr angezeigt werden, da es dann ja nicht nur, wie mit hide() verborgen sondern wirklich zerstört wird.
Wenn das Fenster wieder verwendet werden soll, nach klick auf das X, so solltest Du dort die Funktion zum verbergen des Fensters an diesen Event knüpfen.


Gruß

Dookie
bmh1980
gelöscht
Beiträge: 60
Registriert: Montag 26. Januar 2004, 17:13
Kontaktdaten:

Das hat leider das selbe Ergebnis. Vielleicht habe ich auch im Code was falsch gemacht.

Code: Alles auswählen

    def __init__(self):
        self.xml = gtk.glade.XML(path.join(path.dirname(__file__), 'gpkgtool.glade'))

        self.window1 = self.xml.get_widget('window1')
        self.window1.connect('destroy', self.on_button7_clicked)

        self.window2 = self.xml.get_widget('window2')
        self.window2.connect('destroy', self.on_button8_clicked)

[...]

        self.button7 = self.xml.get_widget('button7')
        self.button7.connect('clicked', self.on_button7_clicked)

        self.button8 = self.xml.get_widget('button8')
        self.button8.connect('clicked', self.on_button8_clicked)

[...]

    def on_button7_clicked(self, args):         # Window1/Exit
        gtk.mainquit()

    def on_button8_clicked(self, args):         # Window2/Cancel
        self.window2.hide()
        self.window1.show()

[...]
Ist hier irgendwo ein Fehler, den ich übersehe?

Marcus
Antworten