我有一個treeview從treemodel填充。我可以向gtk中的現有樹模型添加一列嗎?
我想給樹形視圖添加一個列。是否可以從單獨的treemodel中爲該列繪製數據,還是可以在運行時向現有的treemodel添加一列?
我有一個treeview從treemodel填充。我可以向gtk中的現有樹模型添加一列嗎?
我想給樹形視圖添加一個列。是否可以從單獨的treemodel中爲該列繪製數據,還是可以在運行時向現有的treemodel添加一列?
您可以根據需要在樹視圖中添加儘可能多的列,而不受模型列的限制。如果你需要的數據模型不存在,你可以設置一個回調列:
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()
在gtk.TreeView
對象中有一個append_column
方法,所以是的,您可以編程方式將一列添加到gtk.TreeView
。
但是,我不知道有任何方法可以將新列添加到現有模型或使用同一個gtk.TreeView
的多個模型。無論如何,我想你可以創建一個帶有額外列的新模型,複製上一個模型的內容並更新樹視圖以使用新模型。
要回答標題中的問題:不,你不能添加列到GtkTreeModel它已經經過創建。
謝謝,這正是我需要的。恥辱你不能在gtk中本地定義模型和treeview之間的一對多關係。我原以爲這會使它更有用於表示數據庫信息。 –
我認爲有一些庫建立在gtk的基礎之上,[kiwi](http://www.async.com.br/projects/kiwi/)就是其中之一,但我認爲還有一個更具體的構建頂層接口的數據庫。 –
感謝那@mg我會檢查獼猴桃 –