2016-09-28 2 views
1

나는 tkinter ttk GUI를 사용하여 서버의 파일에 데이터를 표시합니다. 정보는 ttk 트 리뷰에 저장되어 테이블로 표시됩니다. 목표는 사용자가 이러한 행을 필터링하여 사용자가 필터링을 완료 한 후에 트리 뷰에 표시되는 기능 만 수행 할 수 있도록하는 것입니다.tkinter ttk 반복 트리보기

문제는, 내가 treeview 통해 반복하는 방법을 찾을 수 없습니다. 다음과 같이 할 수 있어야합니다.

def filterTreeview(treeviewToFilter, tvColumn, stringVariable): 
    for tvRow in treeviewToFilter: 
     if tvRow.getValue(tvColumn) != stringVariable: 
      tvRow.detach() 

어떻게하면됩니까?

두 번째 질문으로, 누구든지 더 나은 방법을 알고 있습니까? 간단한 배열보다는 treeview를 사용할 어떤 이유가 있습니까? 데이터 배열에서 필터를 만들고 처음부터 다시 트리 뷰 테이블을 만드는 것은 어떨까요?

지금까지 트 리뷰에서 데이터를 사용하는 방법 이해 나 정보를 찾고 자습서를 읽는 시간을 많이 소비했지만 내가 성공하지했습니다

:

python ttk treeview sort numbers http://www.tkdocs.com/tutorial/tree.html

https://fossies.org/dox/Python-3.5.2/classtkinter_1_1ttk_1_1Treeview.html

+1

문서화 된 [get_children] (https://docs.python.org/dev/library/tkinter.ttk.html#tkinter.ttk.Treeview.get_children) 메소드를 사용해 보셨습니까? –

+0

이전에 조사했지만 트리 뷰를 반복하기 위해이 단계를 사용하지 못했습니다. 그것은 정확히 무엇의 목록을 반환합니까? 내가 treeview를 파싱하는데 사용할 수있는 treeview id인가? – user3535074

+1

내가 지적한 문서는 "어린이 목록"을 반환한다고 말합니다. 보다 구체적으로는 각 자식의 ID를 반환합니다. 많은 treeview 메소드는이 id를 인수로 사용합니다. –

답변

0

트리 뷰의 개별 항목을 반복하려면 트리 뷰 항목 'id'목록을 가져 와서 'for'루프에서 반복 할 수 있습니다.

#Column integer to match the column which was clicked in the table 
col=int(treeview.identify_column(event.x).replace('#',''))-1 

#Create list of 'id's 
listOfEntriesInTreeView=treeview.get_children() 

        for each in listOfEntriesInTreeView: 
         print(treeview.item(each)['values'][col]) #e.g. prints data in clicked cell       
         treeview.detach(each) #e.g. detaches entry from treeview 

내가 필요한 것은 수행하지만 더 좋은 방법이 있다면 알려 주시기 바랍니다.