2010-10-17 38 views
4

是否有一些簡單的方法或如何將sqlite數據庫集成到gtk.TreeModel(TreeView)?pySQLite集成到pyGtk樹視圖

我想要的是在樹視圖中顯示來自數據庫的數據,並且當我在數據庫中更改某些內容以查看樹視圖中的更改以及其他方式時,這將非常有用。

回答

3

比方說,你把你所有的數據ITEMLIST:

cur.execute('''select * from warehouse''') 
itemlist = cur.fetchall() 

要獲得列的屬性列表,這樣做:

cur.execute('''PRAGMA table_info(warehouse)''') 

要獲得唯一的列名,然後你可以這樣做:

colnames = [ i[1] for i in cur.fetchall() ] 

稍後,您可能需要爲您的TreeView設置ListStore中的類型,所以請執行以下操作:

coltypes = [ i[2] for i in cur.fetchall() ] 
for index, item in enumerate(coltypes): 
    if (item == 'char'): 
     coltypes[index] = str 
    elif (item == 'integer'): 
     coltypes[index] = int 

然後把所有的信息從數據庫到一個TreeView:

store = gtk.ListStore(*coltypes) 
for act in itemlist: 
    store.append(act) 

現在創建列樹視圖(比方說,這就是所謂的 '樹'):

for index, item in enumerate(colnames): 
rendererText = gtk.CellRendererText() 
column = gtk.TreeViewColumn(item, rendererText, text=index) 
column.set_sort_column_id(index) 
tree.append_column(column) 

之後您應該已經自動生成了具有正確列和所有數據的TreeView小部件。來源:Advanced widgets in PyGTK