动态更改gtkListStore模型

时间:2011-07-25 16:23:46

标签: python pygtk

所以我终于明白了PyGTK是如何工作的,我正在研究一个简单的SQLite管理器应用程序。

要显示查询结果,我正在使用带有gtk.TreeView的gtk.ScrolledWindow。我设法添加甚至更改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 个答案:

答案 0 :(得分:5)

您可以使用gtk.TreeView.set_model将新模型分配给TreeView。因此,您可以为每组结果生成一个新模型,然后设置TreeView以显示该模型。