动态更改gtkListStore模型
我终于搞明白了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)指定一个新的数据模型。也就是说,你可以为每一组结果生成一个新的模型,然后让树形视图显示这个模型。