• 목록
  • 아래로
  • 위로

안녕하세요?


PyQt5의 Item views 중 treeView에서 헤더를 클릭하여 정렬하는 것에 대해 간단한 팁을 적어봅니다.



처음부터 treeView.setSortingEnabled(True)로 설정해놓고 appendRow로 출력하게 되면


출력순서가 초기에 설정해놓은 순서와는 다르게 정렬을 클릭한 상태와 마찬가지의 상태로 출력되어버리는 문제가 있습니다.


따라서 처음 출력을 할 때에는 treeView.setSortingEnabled(False)로 설정을 한 후에 appendRow로 출력을 해야 합니다.

(물론 처음부터 정렬된 상태로 출력하기를 원하시는 경우에는 굳이 이렇게 하실 필요가 없겠죠 ^^)



그런데 treeView.setSortingEnabled(True)로 설정한 경우에는


자동으로 treeView.header().setSectionsClickable(True)가 지정되어 헤더를 클릭할 수 있지만,


treeView.setSortingEnabled(False) 상태에서 헤더를 클릭 가능하게 하려면


treeView.header().setSectionsClickable(True)으로 지정해야 합니다.

(False 상태에서 마우스로 헤더를 클릭해도 아무런 변화가 일어나지 않습니다.)


이를 정리하면 대략 다음과 같은 방식으로 하면 됩니다.





self.treeView.setSortingEnabled(False)

self.treeView.header().setSectionsClickable(True)


# QStandardItemModel().appendRow를 이용하여 출력


self.treeView.header().sectionClicked.connect(self.HeaderClicked) # 헤더 클릭에 대한 시그널과 슬롯을 연결


def HeaderClicked(self):

    self.treeView.setSortingEnabled(True) # 이것만으로 sorting이 됩니다.

    time.sleep(0.1) # 환경에 따라서는 0.1초 정도 텀을 두는 것이 좋습니다.

    self.treeView.setSortingEnabled(False) # 다시 처음과 같은 상태로 Sorting을 끄고, Clickable을 켭니다.

    self.treeView.header().setSectionsClickable(True)

    return





유독 국내에는 treeView의 헤더에 대한 웹문서가 별로 없더군요.


PyQt5의 공식문서에도 이 부분에 대한 설명이 상세하게 나와있지 않아서 저도 삽질을 했네요 ㅠㅠ


다른 분들께서는 저처럼 실수를 하시지 않았으면 하는 생각에 적어봤네요~


그럼 즐거운 주말 되세요!


작성자
이니스프리 119 Lv. (0%) 2008190/115200000EXP

Make StudyForUs Great Again!

 

CSVpuymXAAAVVpd.jpg

댓글 0

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
공지 [작업 완료] 설 명절 맞이 서버 업데이트 안내 3 마스터 마스터 24.02.11.17:21 996
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 마스터 23.01.14.02:23 4675
231 [생활정보] 롯데리아 포켓몬 인형 이벤트! image 이니스프리 이니스프리 16.12.21.00:24 416
230 [Selenium] WebDriverWait에서 EC 대신 람다 함수를 활용하기 이니스프리 이니스프리 19.12.17.01:27 419
229 PHP 7에서 아미나 구형 위젯 사용시 수정해야 할 부분 2 이니스프리 이니스프리 17.11.07.20:48 419
228 [Python] CGV 예매 관련 크롤링 (개요) 이니스프리 이니스프리 23.08.22.21:10 420
227 웹사이트 개인정보보호 의무조치 개선방법 안내 (방송통신위원회, 한국인터넷진흥원 작성) 1 file 이니스프리 이니스프리 17.11.02.20:22 420
226 일부사이트에서 막은 우클릭 해제하기 (즐겨찾기 이용) 슬기 슬기 18.10.06.10:16 421
225 웹에 파이썬의 날개를! Hanam09 Hanam09 17.09.24.20:04 425
224 [Python] BeautifulSoup에서 속성이 정확히 매칭되는 요소만 찾기 이니스프리 이니스프리 20.08.09.13:34 426
223 [정보] 과제할 때 유용한 사이트 11선.jpg 2 image 하루살이 title: 황금 서버 (30일)하루살이 16.12.17.12:41 430
222 동일한 페이지 내에서 복수의 OwlCarousel의 설정을 달리하는 방법 이니스프리 이니스프리 18.11.05.22:15 432
221 다시 데워 먹으면 안 되는 음식 5가지 2 오후두시스토리 오후두시스토.. 17.04.06.11:11 436
220 [Python] 입력받은 연도가 윤년이 아니면 그보다 가장 가까운 과거의 윤년을 출력하기 8 이니스프리 이니스프리 21.04.19.20:23 437
219 [펌] 헷갈리기 쉬운 맞춤법 2 image Adam title: 대한민국 국기Adam 17.10.09.17:27 444
218 화웨이 메이트북 CMOS 진입 / 펑션키 설정 image 이니스프리 이니스프리 20.03.21.14:20 450
217 [파이썬/PHP] 스트링 앞에 0 채워서 자리수 맞추기 이니스프리 이니스프리 19.01.01.13:40 450
216 [IT정보] 나무클라우드 서비스 종료 3 이니스프리 이니스프리 17.02.03.19:32 459
215 [어도비 프리미어] MME device internal error의 해결방법 image 이니스프리 이니스프리 20.04.29.22:20 460
214 [Selenium] 요소가 완전히 로드될 때까지 기다리기 이니스프리 이니스프리 20.08.23.20:22 462
213 [Python] Pytube를 이용하여 유튜브 영상을 간단히 다운받는 법에 대한 설명 이니스프리 이니스프리 20.11.01.14:25 477
212 [무료제공] 강력한 언인스톨러 Soft Organizer 3 이니스프리 이니스프리 17.04.20.21:56 479