2010-08-06 6 views
2

나는 다음과 같은 코드를 가지고있다. (여기서 store는 gtk.ListStore이고 titer는 gtk.TreeIter이다. 다음 행이 없다면 iter_next()None을 반환 할 것이고, 따라서 찾을 때마다 중단 될 것이다. 중간에 요소가 이전에 titer.iter_next() 다음 유효한 요소를 가리키는 대신, 삭제 된 경우 (int, str)ListStoreint 하나 개의 항목을 제거 구성 요소 일치의 ITEM_ID. 그러나pyGTK에서 gtk.ListStore를 검색하고 요소를 제거하는 방법은 무엇입니까?

while True: 
     if store.get_path(titer)[0] == item_id: 
      store.remove(titer) 
      break 
     else: 
      titer = store.iter_next(titer) 
      if titer is None: 
       break 

, 그것은 없음을 지적한다.이를 는 오른쪽의 요소가 int 값이 이전에 삭제 된 값보다 큰 경우 항목, 그것은 결코 발견되지 않는다. gtk.ListStore을 검색하여 항목을 삭제할 올바른 방법이 있습니까?

답변

9

내가주의하는 유일한 실수는 store.get_path(titer)[0]입니다. 그러면 목록 모델의 행 번호 만 표시됩니다. store.get_value(titer, 0)이어야합니다.

for row in store: 
    if row[0] == item_id: 
     store.remove(row.iter) 
     break 
+0

뛰어난 :

그런데

, 코드는 (PyGTK 전용) TreeModelRow를 사용하여 간단한 스타일로 표현 될 수있다! 감사! – jldupont

관련 문제