Glade - GtkComboBox einen neuen Eintrag hinzufügen?

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Freitag 29. Juni 2007, 18:31

Hallo!


Ich habe folgendes Problem:


Ich benutze gtk.glade.XML, um meine GUI zu erzeugen. Nun habe ich eine ComboBox, die ich gerne mit Daten befüllen würde.

Allerdings habe ich gelesen, das das nur geht, wenn die ComboBox mit

Code: Alles auswählen

gtk.combo_box_new_text()
erstellt wurde.

Ich erstelle sie aber mit

Code: Alles auswählen

self.projects_chooser = self.widgets.get_widget('project_chooser')
Und bekomme eine fertige ComboBox zurück.

Gibt es hier noch die Möglichkeit irgentwie die Einträge der Box zu ändern?


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

Samstag 30. Juni 2007, 07:17

OKe ;) Ich habe bisher keine Lösung gefunden.

Jedoch habe ich das Problem erstmal bei Seite gelegt, indem ich einfach ein TreeView benutze :)


So funktionierts auch ganz schick.



MfG EnTeQuAk

€dit:

Was ich gerade gefunden habe:
http://unpythonic.blogspot.com/2007/03/ ... lade3.html
bzw.
http://unpythonic.blogspot.com/2007/03/ ... art-2.html

Damit müsste sich das auch umsetzen lassen. :)
Chrispy
User
Beiträge: 37
Registriert: Montag 10. September 2007, 22:43

Dienstag 25. März 2008, 23:35

Gibt es hier noch die Möglichkeit irgentwie die Einträge der Box zu ändern?


Ich machs so:

Code: Alles auswählen

import gobject

.....

self.projects_chooser = self.widgets.get_widget('project_chooser')

self.liststore = gtk.ListStore(gobject.TYPE_STRING)
self.projects_chooser.set_model(self.liststore)
self.cell = gtk.CellRendererText() 
self.projects_chooser.pack_start(self.cell) 
self.projects_chooser.add_attribute(self.cell, 'text', 0)
Zur Manipulation:

Code: Alles auswählen

self.projects_chooser.append_text("_text_")

self.projects_chooser.prepend_text("_text_", "_position_")

self.projects_chooser.remove_text("_position_")
Um den Text des aktuell selektierten Eintrags zu erhalten:

Code: Alles auswählen

self.model = self.projects_chooser.get_model()
self.active = self.projects_chooser.get_active()
self.text = self.model[self.active][0]
print "%s" % self.text
Ein Blick in die Referenz würde sicher nicht schaden.
Antworten