在Python/GTK中处理treestore

2024-04-19 13:24:57 发布

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

我试图用python/GTK编写一个TreeStore,其中每个父对象对应于所有加载的文件名(“mol_name”),并且每个父对象的子对象都不指定相应加载文件(“chain”)的一个或多个组件。在

我想要3列窗口,第一列列出每个文件的名称,第二列是一个复选按钮,用于切换结果操作是否应用于该文件,第三个是一个组合框,其中列出无,一个或多个可能的组件,相关的已加载文件可以选择进一步完善如何操作已应用。在

下面是我到目前为止的代码。如果您能提供任何帮助或指导,我们将不胜感激:

for imol in molecule_number_list():
    combobox_name = molecule_name(imol)
    combobox.append_text(combobox_name)
combobox.connect('changed', sel_ref_mol)
box1_vbox.pack_start(combobox, False, False)

window = gtk.Window()
window.set_default_size(200, 200)

treestore = gtk.TreeStore(str, bool)
for imol in molecule_number_list():
    mol_name = molecule_name(imol)
    piter = treestore.append(None, [mol_name, True])
    for chain in chain_ids(imol):
        treestore.append(piter, [chain, True])

treeview = gtk.TreeView(treestore)
column_text = gtk.TreeViewColumn("Text")
column_toggle = gtk.TreeViewColumn("Toggle")
column_combo = gtk.TreeViewColumn("Combo")
treeview.append_column(column_text)
treeview.append_column(column_toggle)
treeview.append_column(column_combo)

cellrenderer_text = gtk.CellRendererText()
column_text.pack_start(cellrenderer_text, False)
column_text.add_attribute(cellrenderer_text, "text", 0)

cellrenderer_toggle = gtk.CellRendererToggle()
column_toggle.pack_start(cellrenderer_toggle, True)
column_toggle.add_attribute(cellrenderer_toggle, "active", 1)

cellrenderer_combo = gtk.CellRendererCombo()
cellrenderer_combo.set_property("editable", True)
cellrenderer_combo.set_property("model", treestore)
cellrenderer_combo.set_property("text-column", 0)
column_combo.pack_start(cellrenderer_combo, False)
column_combo.add_attribute(cellrenderer_combo, "text", 2)

Tags: 文件textnamechaingtkcolumntogglemolecule