动态更改gtkListStore模型

skk*_*per 0 python pygtk

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

为了显示查询的结果,我使用带有gtk.TreeView的gtk.ScrolledWindow.我设法在我需要的时候添加甚至更改ListStore对象中的值,我不能做的是更改ListStore对象的模型.

例如,在一个查询中,我可能有两列结果:

    self.query_results = gtk.ListStore(str,str)
    self.query_results.append(["1"],["John Doe"])
Run Code Online (Sandbox Code Playgroud)

在另一个我可能会得到更多列:

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

我知道我可以使用像

     self.query_results = gtk.ListStore(*[str]*len(columns))
Run Code Online (Sandbox Code Playgroud)

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

谢谢,这是我在StackOverflow上的第一个问题,所以请原谅我没有遵循的任何错误/发布指南.

dum*_*ter 5

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