2012-01-19 21 views

回答

3

您可以根據需要在樹視圖中添加儘可能多的列,而不受模型列的限制。如果你需要的數據模型不存在,你可以設置一個回調列:

import gtk 


def inIta(col, cell, model, iter, mymodel): 
    s = model.get_string_from_iter(iter) 
    niter = mymodel.get_iter_from_string(s) 
    obj = mymodel.get_value(niter, 0) 
    cell.set_property('text', obj) 


model = gtk.ListStore(str) 
model2 = gtk.ListStore(str) 
view = gtk.TreeView(model) 
rend1 = gtk.CellRendererText() 
col1 = gtk.TreeViewColumn('hello', rend1, text=0) 
view.append_column(col1) 
rend2 = gtk.CellRendererText() 
col2 = gtk.TreeViewColumn('ciao', rend2) 
col2.set_cell_data_func(rend2, inIta, model2) 
view.append_column(col2) 

model.append(['hello world']) 
model2.append(['ciao mondo']) 

win = gtk.Window() 
win.connect('delete_event', gtk.main_quit) 
win.add(view) 
win.show_all() 
gtk.main() 
+0

謝謝,這正是我需要的。恥辱你不能在gtk中本地定義模型和treeview之間的一對多關係。我原以爲這會使它更有用於表示數據庫信息。 –

+0

我認爲有一些庫建立在gtk的基礎之上,[kiwi](http://www.async.com.br/projects/kiwi/)就是其中之一,但我認爲還有一個更具體的構建頂層接口的數據庫。 –

+0

感謝那@mg我會檢查獼猴桃 –

0

gtk.TreeView對象中有一個append_column方法,所以是的,您可以編程方式將一列添加到gtk.TreeView

但是,我不知道有任何方法可以將新列添加到現有模型或使用同一個gtk.TreeView的多個模型。無論如何,我想你可以創建一個帶有額外列的新模型,複製上一個模型的內容並更新樹視圖以使用新模型。

0

要回答標題中的問題:不,你不能添加列到GtkTreeModel它已經經過創建。

相關問題