2012-05-21 3 views
2

저는 PyGObject를 사용하고 있습니다. 그러나 이것이 모든 GTK에 적용될 수있는 질문이라고 생각합니다. 누군가 C를 사용하는 방법을 알고 있거나 파이썬에서도 작동해야합니다.Gtk.Treeview는 신호와 코드를 통해 행 선택을 취소합니다.

활성 및 비활성 TreeView가 두 개 있는데 Sqlite 데이터베이스의 데이터를로드하고 항목을 하나에서 다른 것으로 바꾸고 &을 끌어서 놓을 수 있습니다. 이것은 하나의 트리 뷰에서 하나의 항목을 클릭하면 다른 항목에서 이전에 선택된 항목의 선택을 취소하길 원한다는 것입니다.

그물에 관해서 아무 것도 발견하지 못했기 때문에 비슷한 일을해서는 안되는 것처럼 보입니다.

+0

선택 모드가 여러 개입니까? –

+0

의견을 보내 주셔서 감사합니다. 현재 아니요, 여러 항목을 선택하지 않았습니다. 그것은 하나입니다. 나는 미래에 그것이 복수가 될 이유가 될지 모른다. – andyinno

답변

2

트리 뷰 선택을 조작하기에는 너무 기본 적이기 때문에 (아마도 내가 오해 할 수도 있음) GtkTreeView.get_selection에서 반환 된 GtkTreeSelection 개체를 사용합니다. 이 객체의 신호에 연결하거나 현재 선택을 변경하는 등의 작업을 수행 할 수 있습니다.

+0

당신은 해결책에 가깝지만 저를 한 발 앞선 것으로 만들었습니다. 내 문제에 대한 해결책은'self._treeview_enabled.connect ('cursor-changed', self.treeview_row_selected)'라고하고'selection = self._treeview_disabled.get_selection() selection.unselect_all()'함수를 가리켜 주셔서 감사합니다. GtkTreeSelection 객체를 사용하여 올바르게 표시됩니다. 내가 본 것을 직접적으로 이해할 수는 없습니다. – andyinno

0

다른보기에서 선택을 해제하려면 선택 모드 속성을 가져와 GTK_SELECTION_NONE으로 설정하면됩니다. (

(connect view-1 'grab-focus 
     (lambda args 
     (set-mode (gtk-tree-view-get-selection view-1) "GTK_SELECTION_SINGLE") 
     (set-mode (gtk-tree-view-get-selection view-2) "GTK_SELECTION_NONE"))) 

것을 : 클릭에 다시 전원을 켜려면, 내 생각은 당신이 grab-focus 신호를 잡을 수 있었다, 그 관점에서 하나의 다른보기에서 none으로 선택 모드를 설정할 수있는 선택 모드를 설정 코드는 guile-gnome 래퍼를 사용하지만 개념은 모든 언어 바인딩에서 동일해야합니다.)이 방법의 문제점은 선택을하기 위해 트리보기를 두 번 클릭해야한다는 것입니다. 한 번은 포커스를 가져오고 다시 한 번 선택을하십시오.

+0

나는 당신의 솔루션을 시도하지 않았지만 광산에 중점을 두었습니다. 제 생각에는 get_selection을 사용하고 unselect_all은 여러분보다 더 깨끗합니다. 어쨌든 당신의 답장을 보내 주셔서 감사합니다. – andyinno