1

アイテムを親行にグループ化するTreeStoreがあります。ツリーストアのアイテムは、ComboBoxから選択できます。

Imgur

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

set_row_separator_func()を使用して親行を非表示にしようとしましたが、展開中のメニューエントリと選択可能なカートが非表示になります。

ComboBoxはこのコードで作成され、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()
4

1 に答える 1

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ます。そうすると、親行は選択できなくなります。

于 2012-04-03T15:33:11.193 に答える