2010-06-13 3 views
1

GtkTreeView에 표시되는 Project 개체 목록이 있습니다. 사용자가 TreeView에서 항목의 행을 두 번 클릭하면 프로젝트의 세부 정보가있는 대화 상자를 열려고합니다.gtk.ListStore 항목을 내 모델로 코어 레이트하는 방법

지금 당장 get_selection()을 통해 TreeView (프로젝트 이름)에서 선택한 값을 가져 와서 내 자신의 목록에서 이름으로 해당 프로젝트를 검색하여 내 모델로 선택을 중재합니다.

그러나 이것은 매우 옳지 않습니다 (플러스에서는 프로젝트 이름이 고유하다고 가정합니다). 그리고 더 우아한 방법이 있는지 궁금합니다.

답변

1

내가 끝낸 것은 gtk.ListStore를 확장하고 내 사용자 지정 목록을 사용하는 것이 었습니다. 또한 append() 메소드를 납치하여 ListStore에 [str, str 등]을 추가 할뿐만 아니라 ListStore를 확장하는 클래스의 사용자 정의 목록 속성 내에 실제 모델을 추가합니다.

사용자가 행을 두 번 클릭하면 요청 된 모델을 사용자 지정 목록의 모델 인덱스에 해당하는 ListStore의 행 인덱스로 가져옵니다.

1

기본 모델이 아님 백엔드 및 프리젠 테이션에서 동일한 객체를 사용하도록 특별히 작성된 Py-gtktree models을 사용해 볼 수 있습니다.

이 문서에서는 표준 모델 (즉, Py-gtktree를 전혀 사용하지 않고)에서이 작업을 수행 할 수있는 대체 방법을 간략히 설명하지만 우아한 것으로 부르지는 않습니다.