2011-07-25 58 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