2011-07-25 59 views
0

所以我终于明白了PyGTK是如何工作的,我正在开发一个简单的SQLite管理器应用程序。动态更改gtkListStore模型

要显示查询的结果,我使用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"],["[email protected]"],["password"]) 

我知道我可以使用的东西像

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

但aparently gtk.ListStore不能让它的模型在创建后被更改,所以我会如何更新e这个查询表?我是否需要销毁Treeview并在每次运行不同的查询时再次绘制它?

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

+0

检出[libgda4](http://www.gnome-db.org/) - 它做你想做的事情,并有一个ListStore接口,可直接与底层数据库进行通信。 – ptomato

回答

5

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

+0

奇怪的是,我在2分钟前就明白了这一点,并让它工作。感谢您的帮助,正是我所做的。 – skkeeper

+0

不要忘记提交答案。 (勾选左边的勾号) – saeedgnu