2012-04-02 7 views
1

Ich habe einen TreeStore, der Elemente in übergeordneten Zeilen gruppiert. Objekte aus dem Treestore können dann aus einer ComboBox ausgewählt werden.GTK3 ComboBox zeigt übergeordnete Elemente aus einem TreeStore

Imgur

Der Benutzer sollte die übergeordneten Elemente auszuwählen, aber GTK setzt in jedem Kaskadierung Abschnitt über seinen Kindern einen auswählbaren Eintrag nicht in der Lage sein.

Ich habe versucht, set_row_separator_func() zu verwenden, um die übergeordneten Zeilen zu verbergen, aber es blendet den expandierenden Menüeintrag sowie den auswählbaren Warenkorb aus.

Die ComboBox mit diesem Code erstellt wird, und self.ObjectsList befindet sich auf der linken Seite des Bildes angezeigt:

self.gcombo = Gtk.ComboBox.new_with_model(self.objectsList) 
renderer_text = Gtk.CellRendererText() 
self.gcombo.pack_start(renderer_text, True) 
self.gcombo.add_attribute(renderer_text, "text", 0) 
self.gcombo.show() 
+0

Code anzeigen? – ptomato

+0

Nicht sicher, welchen Code ich hinzufügen kann, es ist nur ein Standard-TreeStore und ComboBox soweit ich sehen kann. Ich habe den Combobox-Code trotzdem eingefügt – UbunTom

Antwort

3

Hier ist ein Beispielprogramm, das tut, was Sie wollen:

from gi.repository import Gtk 

objectsList = Gtk.TreeStore(str, bool) 

for i in range(2): 
    parent = objectsList.append(None, ['Parent {}'.format(i), False]) 
    for j in range(2): 
     objectsList.append(parent, ['Child {}'.format(j), True]) 

gcombo = Gtk.ComboBox.new_with_model(objectsList) 
renderer_text = Gtk.CellRendererText() 
gcombo.pack_start(renderer_text, True) 
gcombo.add_attribute(renderer_text, "text", 0) 
gcombo.add_attribute(renderer_text, 'sensitive', 1) 
gcombo.show() 

win = Gtk.Window() 
win.add(gcombo) 
win.show_all() 
win.connect('destroy', Gtk.main_quit) 

Gtk.main() 

Sie Setzen Sie die Eigenschaft sensitive des Renderers in den übergeordneten Zeilen auf False und in den untergeordneten Zeilen auf True. Auf diese Weise können die übergeordneten Zeilen nicht ausgewählt werden.

Verwandte Themen