[python] wxPython - ListCtrl에서 Column 별 정렬 기법 Programming

wxPython을 시작하시는 분들에게 도움이 되었으면 하네요.

Column 바를 클릭하면 자동으로 오름차순 내림차순으로 정렬되도록 하는 방법은 다음과 같습니다.
거두절미 하고 이벤트에서 처리하는 부분 보여드릴께요.

1. 이벤트를 등록하시고..
   self.Bind(wx.EVT_LIST_COL_CLICK, self.OnListCtrlColClick, self.listCtrlMsg)

2. 다음과 같이 이벤트 핸들러를 만듭니다.
   def OnListCtrlColClick(self, event):
        col = event.GetColumn()
        index = operator.itemgetter(col)
        if self.sortedCol == col:
            self.itemList.reverse()
        else:
            self.itemList.sort(key=index)
            self.sortedCol = col
           
        self.loadList()


참고) self.sortedCol은 클래스의 변수로 이미 생성되어 있습니다. 초기화는 -1로 했습니다. 즉, 직전에 정렬된 Column을 다시 클릭 할 경우는 역순으로 보여주는 코드 입니다. 당연히 직전에 정렬된 Column이 아닌 다른 Column이라면 재정렬을 해야겠죠..

self.loadList() 함수는 제가 만든겁니다.
    def loadList(self):
        self.listCtrlMsg.DeleteAllItems()
        for item in self.itemList:
            index = self.listCtrlMsg.InsertStringItem(sys.maxint, item[0])
            self.listCtrlMsg.SetStringItem(index, 1, item[1])


그냥 아이템 등록하는 함수죠..

샘플 소스를 만들어서 다 올리는게 좋지만... 휴... 귀차니즘이 -_-;;; 제가 작업하는 코드에서 일부분 발췌했습니다.
그럼 궁금한점은 립흘로..


덧글

  • zelon 2008/12/09 04:39 # 삭제

    파이썬으로 UI 도 하는구나. 난 버튼 누르면 메시지 박스 띄우는거 조금 끄적거리다가 말았는데, 작업(!)을 파이썬으로 한다니 궁금하네. 립흘로 달았따 ㅋㅋ
  • fullc0de 2008/12/09 09:10 #

    zelon // 여자 꼬시는 작업을 파이썬으로 한단 말이다! ㅋㅋ