动态更改gtkListStore模型

0 投票
1 回答
2040 浏览
提问于 2025-04-16 22:14

我终于搞明白了PyGTK是怎么回事,现在正在做一个简单的SQLite管理应用。

为了显示查询的结果,我使用了一个gtk.ScrolledWindow和gtk.TreeView。我已经能够根据需要添加和修改ListStore对象中的值,但我无法更改ListStore对象的模型。

举个例子,在一次查询中,我可能会得到两列的结果:

    self.query_results = gtk.ListStore(str,str)
    self.query_results.append(["1"],["John Doe"])

而在另一查询中,我可能会得到更多的列:

    self.query_results = gtk.ListStore(str,str,str,str)
    self.query_results.append(["20"],["Jane"],["jane@example.com"],["password"])

我知道我可以使用一些方法,比如

     self.query_results = gtk.ListStore(*[str]*len(columns))

但显然gtk.ListStore在创建后不能更改它的模型,那我该如何更新这个查询表呢?每次运行不同的查询时,我需要销毁Treeview然后重新绘制吗?

谢谢,这是我在StackOverflow上的第一个问题,请原谅我可能犯的任何错误或没有遵循的发布指南。

1 个回答

6

你可以使用 gtk.TreeView.set_model 这个方法来给一个树形视图(TreeView)指定一个新的数据模型。也就是说,你可以为每一组结果生成一个新的模型,然后让树形视图显示这个模型。

撰写回答