2010-05-08 5 views
0

gtk.TreeView을 확장하는 클래스에 코드가 있으며이 코드는 init입니다. 3 열이있는 트리보기를 만들고 싶습니다. 사용자가 물건을 입력 할 수있는 토글 버튼, 레이블 및 드롭 다운 상자. 아래의 코드는 토글 버튼이 마우스 클릭에 반응하지 않고 레이블과 ComboEntry가 그려지지 않는다는 점을 제외하고는 작동합니다. (그래서 나는 그것이 작동하지 않는다고 말할 수 있다고 생각합니다). 그러나 행을 잘 추가 할 수 있습니다. 모든PyGtk에서 GtkTreeViews를 설정하는 데 문제가 있습니다

#make storage     enable/disable label user entry 
    self.tv_store = gtk.TreeStore(gtk.ToggleButton, str, gtk.ComboBoxEntry) 
    #make widget 
    gtk.TreeView.__init__(self, self.tv_store) 
    #make renderers 
    self.buttonRenderer = gtk.CellRendererToggle() 
    self.labelRenderer = gtk.CellRendererText() 
    self.entryRenderer = gtk.CellRendererCombo() 
    #make columns 

    self.columnButton = gtk.TreeViewColumn('Enabled') 
    self.columnButton.pack_start(self.buttonRenderer, False) 
    self.columnLabel = gtk.TreeViewColumn('Label') 
    self.columnLabel.pack_start(self.labelRenderer, False) 
    self.columnEntry = gtk.TreeViewColumn('Data') 
    self.columnEntry.pack_start(self.entryRenderer, True) 

    self.append_column(self.columnButton) 
    self.append_column(self.columnLabel) 
    self.append_column(self.columnEntry) 

    self.tmpButton = gtk.ToggleButton('example') 
    self.tmpCombo = gtk.ComboBoxEntry(None) 
    self.tv_store.insert(None, 0, [self.tmpButton, 'example label', self.tmpCombo]) 

답변

2

첫째, 당신은 bool, strstr 열, 당신이 지금하고있는하지 방식으로 모델을 만들어야합니다. 둘째, 적절한 모델 열에서 렌더러의 속성을 바인딩해야합니다.

self.columnButton = \ 
    gtk.TreeViewColumn ('Enabled', self.buttonRenderer, 
         active = 0) # 0 is the tree store column index 

같이 그럼 당신은 True에 렌더러에 editable 속성을 설정해야합니다. 마지막으로 렌더러 유형에 따라 신호 (changed 또는 editing-done)를 처리하고 그에 따라 업데이트해야합니다.

일부 헬퍼를 사용하는 것이 더 쉬울 수도 있습니다. Py-gtktree - 트리를 편집하는 예도 있습니다.

+0

ERR, append_column입니까? –

+0

맞아, 내 실수 야. 편집 된 답변을 참조하십시오. – doublep

1

gtk.CellRendererToggle에있는 toggled 신호를 연결하기 만하면 클릭하면 해당 신호가 방출되고 콜백에서는 모델의 값이 변경됩니다.

ej.

def toggle(self, cellrenderer, path): 
     Self.model[path][column] = not self.model[path][column] 

self.model

는 아니, 1 개 인자를 gtk.TreeView의 트 리뷰에 asociated 모델,

관련 문제