실행화면
선택한 폴더 내 파일 목록을 보여주는 Tkinter 모듈로 만든 간단한 윈도우즈 앱입니다.
- 앱 실행 시 먼저 실행파일이 위치한 폴더의 파일목록을 표시해줍니다.
- 상단에는 현재 폴더의 위치를 표시해주는 위젯과 폴더 선택을 위한 버튼 위젯이 위치해있습니다.
- 파일명과 파일 크기를 Treeview에 담아 각각 열1, 열2에 표시해줍니다.
- 헤딩을 클릭하여 오름차순 및 내림차순으로 목록을 나열할 수 있습니다.
- 트리뷰 우측에 파일 목록 탐색을 위한 스크롤바를 적용하였습니다.
- 커맨드창을 숨기기위해 파이썬 실행파일의 확장자는 pyw로 설정하였습니다.
코드
import os
import tkinter as tk
from tkinter import filedialog
from tkinter import ttk
def select_folder():
folder_path = filedialog.askdirectory()
if folder_path:
path_var.set(folder_path)
get_files()
def get_files(sort_by=None, descending=False):
files = os.listdir(path_var.get())
if sort_by is not None:
files.sort(key=lambda x: getattr(os.path, sort_by)(os.path.join(path_var.get(), x)), reverse=descending)
treeview.delete(*treeview.get_children())
for file in files:
if os.path.isfile(os.path.join(path_var.get(), file)):
file_size = os.path.getsize(os.path.join(path_var.get(), file))
file_name = f"{file}"
treeview.insert('', tk.END, text=file_name, values=(file_size))
def toggle_sort_order(col):
global sort_col, descending
if sort_col == col:
descending = not descending
else:
sort_col = col
descending = False
get_files(sort_by=sort_col, descending=descending)
root = tk.Tk()
root.title('파일 목록')
path_var = tk.StringVar()
path_var.set(os.getcwd())
folder_label = tk.Label(root, text='폴더:')
folder_label.grid(row=0, column=0, padx=5, pady=5, sticky="w")
path_entry = tk.Entry(root, textvariable=path_var)
path_entry.grid(row=0, column=1, padx=5, pady=5, sticky="ew")
select_folder_btn = tk.Button(root, text='폴더 선택', command=select_folder)
select_folder_btn.grid(row=0, column=2, padx=5, pady=5, sticky="e")
treeview_frame = tk.Frame(root)
treeview_frame.grid(row=1, column=0, columnspan=3, padx=5, pady=5, sticky='nsew')
treeview = ttk.Treeview(treeview_frame, columns=("File Size",))
treeview.pack(side=tk.LEFT, fill=tk.BOTH, pady=5, expand=True)
scrollbar = ttk.Scrollbar(treeview_frame, orient=tk.VERTICAL, command=treeview.yview)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
style = ttk.Style(root)
style.theme_use("clam")
style.configure("Treeview.Heading", background="#F5F6F7", foreground="black")
treeview.config(yscrollcommand=scrollbar.set)
treeview.heading("#0", text="파일명", command=lambda: toggle_sort_order('basename'))
treeview.column("#0", width=400)
treeview.heading("File Size", text="파일 크기 (Bytes)", command=lambda: toggle_sort_order('getsize'))
treeview.column("File Size", width=150)
sort_col = None
descending = False
get_files(sort_by=sort_col, descending=descending)
root.columnconfigure(0, weight=0)
root.columnconfigure(1, weight=8)
root.columnconfigure(2, weight=0)
root.rowconfigure(1, weight=1)
window_width = 600
window_height = 300
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
x = int((screen_width - window_width) / 2)
y = int((screen_height - window_height) / 2)
root.geometry(f"{window_width}x{window_height}+{x}+{y}")
root.mainloop()
[플그래밍/파이써언] - [파이썬] 간단한 텍스트 에디터 (열기, 조회, 수정, 저장)
728x90
'플그래밍 > 파이써언' 카테고리의 다른 글
[파이썬] Selenium으로 Javascript 코드 실행하기 (1) | 2023.04.28 |
---|---|
아나콘다 설치 방법입니다. (0) | 2023.04.09 |
[파이썬] Selenium에서 webdriver 다운로드 콘솔창 가리는 ⚒️방법⚒️ (0) | 2023.03.20 |
[파이썬] 내가 공부하려고 만든 Tkinter 투토리얼 (0) | 2023.02.18 |
[파이썬] Pandas 기초 (0) | 2023.02.10 |