2012-04-02 1 views
1

アイテムを親行にグループ化するTreeStoreがあります。 TreestoreのアイテムはComboBoxから選択できます。GTK3 ComboBoxはTreeStoreの親アイテムを表示します

Imgur

ユーザーは、親項目を選択できないようにする必要がありますが、GTKは、各カスケードセクションでその子以上の選択可能なエントリを置きます。

私は親行を隠すためにset_row_separator_func()を使用しようとしましたが、選択可能なカートと同様に、拡張メニュー項目も隠しています。

コンボボックスは、このコードを使用して作成され、そしてself.ObjectsListは、画像の左側に示されています:

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

コードを表示しますか? – ptomato

+0

私が追加できるコードは不明ですが、これは標準的なTreeStoreとComboBoxです。とにかくコンボボックスのコードを貼り付けました – UbunTom

答えて

3

ここで何をしたいんサンプルプログラムです:

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() 

あなたはレンダラーのsensitiveプロパティを親行にFalse、子行にTrueに設定します。そうすれば、親行は選択できません。

関連する問題