주어진 열에 CellRendererCombo가있는 트리 뷰가 있습니다.gtk : CellRendererCombo 'changed'신호의 TreeView 모델을 수정하는 중 문제가 발생했습니다.
crc = gtk.CellRendererCombo()
crc.set_property('model', comboModel)
crc.set_property('text-column', 0)
crc.set_property('editable', True)
crc.set_property('has_entry', False)
cl = gtk.TreeViewColumn(ctitle, crc, text=i)
def changed(cell, path, newiter):
treeViewModel[path][0] = "HAH"
crc.connect("changed", changed)
treeView.append_column(cl)
treeView
이 treeViewModel
은 모델이며, comboModel
는 두 개의 문자열을 포함하는 콤보 항목의 모델로하는 TreeView
이다 : 나는 열을 설정하려면 다음 코드를 사용합니다.
내가 코드를 실행하면 예상대로 다음 콤보 내가 항목을 선택 처음 것을 제외하고, 작동 나는 다음과 같은 오류를 얻을 : 두 번째 시간에
c:\python25\lib\site-packages\twisted\internet\gtk2reactor.py:255: Warning: inva
lid unclassed pointer in cast to `GObject'
gtk.main()
c:\python25\lib\site-packages\twisted\internet\gtk2reactor.py:255: Warning: g_ob
ject_notify: assertion `G_IS_OBJECT (object)' failed
gtk.main()
를 내가 얻을 :
c:\python25\lib\site-packages\twisted\internet\gtk2reactor.py:255: Warning: inva
lid uninstantiatable type `<invalid>' in cast to `GObject'
gtk.main()
세 번째로 프로그램이 충돌합니다. 연결선을 다음과 같이 변경하면
crc.connect("edited", changed)
... 코드가 올바르게 작동합니다. 그러나 값은 콤보 상자를 클릭 한 후에 만 변경되며 객체를 선택할 때마다 값이 변경됩니다. 후자를 어떻게 할 수 있습니까?
편집 : 난 그냥 API docs for pygtk이 나타났습니다 : 즉시 트리보기에 표시되는 모델을 변경하면, 트리보기 바로 편집이 작동을 중단 할 것을
가참고. 즉, 콤보 셀 렌더러가 편집 된 신호 또는 편집 된 신호를 내보낼 때까지 모델을 변경하지 않는 것이 좋습니다.
코드가 충돌한다는 것은 언급하지 않았습니다. 어떤 경우에는 콤보 박스의 항목을 클릭 한 후 ENTER를 누르거나 다른 곳을 클릭하지 않고 편집을 중단하고 싶습니다. 어떻게해야합니까?