GTK3组合框显示来自T的父项

2024-09-28 19:04:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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()

Tags: 项目text用户selfgtk条目级联renderer
1条回答
网友
1楼 · 发布于 2024-09-28 19:04:19

下面是一个示例程序,它可以执行您想要的操作:

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。这样,父行就不可选择了。在

相关问题 更多 >