2012-01-19 2 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에 열을 추가 할 수는있었습니다 후 만들어진.

관련 문제