최근 tkinter를 이용해서 GUI를 학습하고 있었는데 tkinter를 잘 안쓰는지 제가 검색을 잘 못하는건지
생각보다 예제소스가 너무 안나와서 난황을 겪고 있습니다.
그래서 습득한 지식을 공유하고자 컬럼정렬 소스관련하여 포스팅하고자 합니다.
참고로 파린이라 문맥이나 로직이 깔끔하지 않을 수 있습니다. ^^;;
저는 아래 링크와 스택 오버플로우에서 검색하여 도움을 받고 있습니다.
실행화면
tkinter treeview 컬럼 정렬 예제소스
import tkinter as tk import tkinter.ttk as ttk # 창 생성정보 width = "500" height = "300" x = "+50" y = "+30" app = tk.Tk() app.title("test") app.geometry("{}x{}{}{}".format(width,height,x,y)) app.resizable(0,0) # 정렬함수 def treeview_sort_column(tv, col, reverse): # 트리뷰 값 리스트로 만들어주기 l = [(tv.set(k, col), k) for k in tv.get_children('')] # 정렬 l.sort(reverse=reverse) # 리스트 move를 사용하여 값 순서 변경 for index, (val, k) in enumerate(l): tv.move(k, '', index) # 컬럼헤딩 command 매개변수 변경(reverse와 not reverse 순차적으로 실행되기 위함) tv.heading(col, command=lambda _col=col: treeview_sort_column(tv, _col, not reverse)) # treeview 설정 columns = ('name', 'age') treeview = ttk.Treeview(app, columns=columns, show='headings') treeview.pack() treelist = [('홍길동',65),('이순신',20),('강감찬',50),('권철환',33),('권율',22)] # treeview 데이터 입력 for i in range(len(treelist)): treeview.insert("",tk.END,text=i,iid=i ,values=treelist[i]) # treeview 컬럼헤딩 command 설정 for col in columns: treeview.heading(col, text=col, command=lambda _col=col: treeview_sort_column(treeview, _col, False)) app.mainloop()
제 글이 많은 도움이 되셨으면 좋겠습니다.
파이썬에 관한 더 많은 정보가 필요하시면 아래링크를 클릭해주세요.