Wie wechselt man Widgets zur Laufzeit?

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
rhersel
User
Beiträge: 105
Registriert: Mittwoch 3. Dezember 2008, 11:29

Ich möchte zur Laufzeit (also, nachdem die GUI aufgebaut und angezeigt ist) in einem ScrolledWindow entweder eine TextView oder eine TreeView anzeigen. Grundsätzlich möchte ich wissen, wie man zur Laufzeit dynamisch die Widgets auf einem Window ändert.

Ich bekomme immer solche Fehlermeldungen:
GtkWarning: Attempting to add a widget with type GtkTreeView to a container of type GtkScrolledWindow, but the widget is already inside a container of type GtkScrolledWindow, the GTK+ FAQ at http://www.gtk.org/faq/ explains how to reparent a widget.

self.scrolled_window_right.add(self.listview)
GtkWarning: gtk_scrolled_window_add: assertion `bin->child == NULL' failed
In den FAQ habe ich leider nichts dazu gefunden.
rhersel
User
Beiträge: 105
Registriert: Mittwoch 3. Dezember 2008, 11:29

Ich mache es jetzt so:
Alle Widgets bei der Initialisierung erzeugen und dann zur Laufzeit die Widgets mit show() und hide() an- und ausschalten die gerade gebraucht werden.
Habe nicht herausgefunden, ob man zur Laufzeit neue Widgets erzeugen kann.
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Klar kann man zur Laufzeit Widgets erzeugen!

Nur du kannst einem Container kein Widget mit dem ``add`` Befehl hinzufügen, wenn das schon einem anderen Container hinzugefügt ist. Dazu musst du zuerst das Widget mit ``remove`` vom anderen Container entfernen.
Antworten