Python glade中的gtk liststore-获取liststore的列名

Python glade中的gtk liststore-获取liststore的列名,python,gtk,gtk3,glade,Python,Gtk,Gtk3,Glade,在glade中创建Gtk.ListStore时,可以向其中添加列名。 在.glade文件中,它如下所示: <object class="GtkListStore" id="liststore1"> <columns> <!-- column-name col1 --> <column type="gchararray"/> <!-- column-name col2 --> &

在glade中创建
Gtk.ListStore
时,可以向其中添加列名。 在.glade文件中,它如下所示:

  <object class="GtkListStore" id="liststore1">
    <columns>
      <!-- column-name col1 -->
      <column type="gchararray"/>
      <!-- column-name col2 -->
      <column type="gchararray"/>
    </columns>
    <data>
      <row>
        <col id="0" translatable="yes">entry</col>
      </row>
    </data>
  </object>

我可以使用
liststore.get\u column\u type(index)
获取列类型,但我还希望获取glade文件中的列名(
[“col1”,“col2”]
),如xml注释。

liststore/treestore上的列名在Gtk中不使用。它们在glade中用作设置treeview的辅助工具,并将CellRenders与模型关联。Glade使用libxml,可能不会使用Gtk.Builder作为文件解析器,因此它可以读取注释并设置附加信息。但你的目标是什么?很遗憾,这无法实现。我从后端获得了一些json数据,希望将json对象键映射到模型。这样就可以直接使用模型列名,而不必为每个视图编写映射函数。也许我会尝试使用cellrenderer ID。像和MVC一样,填充模型,然后将视图映射到正确的列。您的模型可以是某个类的对象,然后使用TreeViewColumn/CellLayout
set\u cell\u data\u func
方法将正确的值映射到渲染器。问题是,填充模型意味着将json对象映射到它。当我有一个包含列的模型:
(id:int,name:str)
然后获取json数据:
{name:foo,id:1}
,我必须将
id
键映射到第一列,将
name
键映射到第二列。在Python中,映射是无序的,所以我不能只遍历json对象,但它是如此通用以至于你不知道json对象的内容?json结构独立于解析对象,在解析对象中可以获得一对键/值,所以它们“无序”的事实并不重要,除非您实现一个非常严格的解析器,但我认为情况并非如此。如果你能详细说明,也许我们能帮上忙。
builder = Gtk.Builder()
builder.add_from_file("file.glade")
liststore = builder.get_object("liststore1")