Seite 1 von 1

Zweites Fenster lässt sich nur einmal öffnent

Verfasst: Sonntag 9. Mai 2004, 18:45
von bmh1980
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

Verfasst: Montag 10. Mai 2004, 00:14
von Dookie
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

Verfasst: Montag 10. Mai 2004, 18:03
von bmh1980
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