PyGTK + Glade + Kiwi: Dialoge mehrmals benutzen

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
fred.reichbier
User
Beiträge: 155
Registriert: Freitag 29. Dezember 2006, 18:27

Hallo,

ich steige zurzeit etwas in die PyGTK-Programmierung ein, und habe nun ein Problem. Ich speichere meine Dialoge in einer Glade-Datei und lasse in diesen genug Freiraum, um später Kiwi-Widgets einzubauen. Das funktioniert auch sehr gut bei Dialogen, die nur einmal angezeigt werden.
Wenn ich aber einen Dialog mehrmals anzeigen will (und ihn dazwischen immer mit .hide() verstecke, da .destroy() nicht geht, weil ich ihn wiederverwenden will), dann werden diese Kiwi-Widgets auch mehrmals eingefügt. Das will ich aber eigentlich garnicht; außerdem habe ich die Vermutung, dass die gewählten Werte und Einstellungen bestehen bleiben und beim nächsten Aufruf immer noch da stehen, das möchte ich ebenfalls nicht.
Gibt es da eine einfache Möglichkeit, das zu umgehen? Z.B. durch eine copy-Methode, mit der ich mir einfach immer eine Kopie vom Dialog erstelle und mit dieser arbeite? Oder etwas ganz anderes?

Gruß Fred
crockett
User
Beiträge: 12
Registriert: Montag 29. Mai 2006, 21:36
Kontaktdaten:

Das ist jetzt keine direkte Antwort auf die Frage, aber vielleich hilft es trotzdem weiter. Zum erstellen der glade-Datei gibt es das Programm Gazpacho, damit kann man direkt kiwi-widgets in die glade-Datei einbauen. Ich hoffe die Information hilft dir weiter.

gruß
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Also wenn du deine eigenen Kiwi-Widgets einfügen möchtest, musst du schauen das du diese nicht merfach einfügst.


Das kannst du ganz einfach machen, indem du z.B. in deiner Klasse nen Attribut `self._my_dialog` mit `None` initialisierst und beim ersten Aufruf des Dialogs `self._my_dialog` mit dem Dialog referenzierst. So kannst du nun testen, ob der Dialog schonmal aufgerufen wurde. Wurde er, brauchst du die Anweisungen zum packen der Kiwi-Widgets nicht mehr zu durchlaufen sondern nur noch `self._my_dialog.show()` aufrufen.

Zumindest ich mache das so.

MfG EnTeQuAk
fred.reichbier
User
Beiträge: 155
Registriert: Freitag 29. Dezember 2006, 18:27

Hallo,

danke für die Antworten.
EnTeQuAk: Ich habs jetzt so gemacht, wie du gesagt hast, bin allerdings auch dort recht bald auf Probleme mit mehrfachem Signalverbindungen gestoßen. Jetzt mache ich das wie hier beschrieben, das ist sauberer und einfacher ;)

crockett: Gazpacho kenne ich, allerdings kam mir das beim Reinschauen ziemlich instabil vor - trotzdem danke, das Programm hat bestimmt eine Zukunft :D

Gruß Fred
Antworten