파이썬 프로그램을 만들때, 내 컴퓨터에 사진이나, 파일을 불러오는 경우가 많이 있습니다. 이때 사용하는 것이 파일다이얼로그인데요, 이번 글에서는 이 내용에 대해 Python Tkinter로 파일 탐색기(FileDialog) 만들기 방법 과정을 살펴보겠습니다.
[목차]
기본 tkinter 라이브러리 설치
단계 1 : 필요한 모듈 가져오기
단계 2 : 파일 탐색기 클래스 생성하기
단계 3 : 위젯 추가하기
단계 4 : 파일 목록 채우기
단계 5 : 디렉토리 선택하기
단계 6 : 디렉토리 선택 바인딩하기
단계 7 : 애플리케이션 완료하기
예제 프로그램 코드
결론 및 의견
기본 tkinter 라이브러리 설치
Python 프로그래밍에 대한 기본적인 이해가 필요하며 Tkinter가 설치되어 있어야 합니다. 다음 명령을 사용하여 Tkinter를 설치할 수 있습니다.
pip install tkinter
단계 1 : 필요한 모듈 가져오기
우선 파일 탐색기에 필요한 모듈을 가져오겠습니다.
import os
import tkinter as tk
from tkinter import filedialog
단계 2 : 파일 탐색기 클래스 생성하기
다음으로 tkinter.Tk 클래스를 상속하는 FileExplorer 클래스를 정의합니다. 이 클래스는 파일 탐색기 애플리케이션의 메인 창 역할을 합니다.
class FileExplorer(tk.Tk):
def __init__(self):
super().__init__()
self.title("파일 탐색기")
self.geometry("800x500")
self.create_widgets()
def create_widgets(self):
# 위젯 생성 코드가 여기에 들어갑니다.
단계 3 : 위젯 추가하기
create_widgets 메서드 내부에서 파일 탐색기에 필요한 위젯을 추가합니다. 파일 목록을 보유하기 위한 tkinter.Frame과 파일과 디렉토리를 표시하는 tkinter.Listbox로 시작합니다.
def create_widgets(self):
self.file_frame = tk.Frame(self)
self.file_frame.pack(fill=tk.BOTH, expand=True)
self.file_listbox = tk.Listbox(self.file_frame)
self.file_listbox.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
단계 4 : 파일 목록 채우기
입력된 디렉토리의 콘텐츠로 파일 목록을 채우기 위해 load_directory라는 헬퍼 함수를 작성합니다. 이 함수는 디렉토리 경로를 입력으로 받아 현재 목록을 지우고 파일과 디렉토리를 목록박스에 추가합니다.
def load_directory(self, directory):
self.file_listbox.delete(0, tk.END) # 목록박스 지우기
files = os.listdir(directory)
for file in files:
self.file_listbox.insert(tk.END, file)
단계 5 : 디렉토리 선택하기
이제 사용자가 파일 대화 상자를 사용하여 디렉토리를 선택할 수 있는 select_directory라는 함수를 구현합니다. 디렉토리가 선택되면 load_directory 함수를 호출하여 목록을 채웁니다.
def select_directory(self):
directory = filedialog.askdirectory()
if directory:
self.load_directory(directory)
단계 6 : 디렉토리 선택 바인딩하기
select_directory 함수를 트리거하기 위해 버튼 위젯에 바인딩합니다. FileExplorer 클래스에 tkinter.Button 위젯을 추가하고 select_directory 함수에 바인딩합니다.
def create_widgets(self):
# ...
self.select_button = tk.Button(self, text="디렉토리 선택", command=self.select_directory)
self.select_button.pack()
단계 7 : 애플리케이션 완료하기
마지막으로 FileExplorer 클래스의 인스턴스를 만들고 Tkinter 이벤트 루프를 실행해야 합니다.
if __name__ == "__main__":
file_explorer = FileExplorer()
file_explorer.mainloop()
예제 프로그램 코드
이 코드는 파일 탐색기의 기본적인 기능을 제공합니다. 사용자는 디렉토리를 선택하고 선택한 디렉토리의 파일과 디렉토리 목록을 확인할 수 있습니다. 필요에 따라 코드를 확장하여 추가 기능을 구현할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
import os
import tkinter as tk
from tkinter import filedialog
class FileExplorer(tk.Tk):
def __init__(self):
super().__init__()
self.title("File Explorer")
self.geometry("800x500")
self.create_widgets()
def create_widgets(self):
self.file_frame = tk.Frame(self)
self.file_frame.pack(fill=tk.BOTH, expand=True)
self.file_listbox = tk.Listbox(self.file_frame)
self.file_listbox.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
self.select_button = tk.Button(self, text="Select directory", command=self.select_directory)
self.select_button.pack()
def load_directory(self, directory):
self.file_listbox.delete(0, tk.END)
files = os.listdir(directory)
for file in files:
self.file_listbox.insert(tk.END, file)
def select_directory(self):
directory = filedialog.askdirectory()
if directory:
self.load_directory(directory)
if __name__ == "__main__":
file_explorer = FileExplorer()
file_explorer.mainloop()
|
cs |
실행화면
- os와 tkinter 라이브러리를 임포트합니다. filedialog는 tkinter 모듈에서 파일 대화상자를 사용하기 위해 추가로 임포트합니다.
- FileExplorer 클래스를 정의합니다. 이 클래스는 tkinter.Tk 클래스를 상속받아 파일 탐색기 애플리케이션의 메인 창 역할을 합니다. __init__ 메서드에서는 상속받은 Tk 클래스의 생성자를 호출하여 창의 제목과 크기를 설정하고, create_widgets 메서드를 호출하여 위젯을 생성합니다.
- create_widgets 메서드에서는 파일 탐색기의 위젯을 생성합니다. file_frame은 파일 목록을 표시할 Frame 위젯이고, file_listbox는 파일과 디렉토리를 표시할 Listbox 위젯입니다. select_button은 디렉토리 선택 버튼으로, 사용자가 클릭하면 select_directory 함수가 호출됩니다.
- load_directory 함수는 주어진 디렉토리의 내용으로 파일 목록을 채우는 역할을 합니다. os.listdir 함수를 사용하여 디렉토리의 파일과 디렉토리를 가져온 후, file_listbox 위젯에 추가합니다.
- select_directory 함수는 파일 대화상자를 통해 사용자에게 디렉토리 선택을 요청합니다. 선택한 디렉토리가 있다면, load_directory 함수를 호출하여 파일 목록을 업데이트합니다.
- if __name__ == "__main__": 구문을 사용하여 스크립트가 직접 실행될 때만 FileExplorer 클래스의 인스턴스를 생성하고 Tkinter 이벤트 루프를 실행합니다. 이를 통해 스크립트가 다른 모듈로 임포트될 때는 실행되지 않습니다.
결론 및 의견
Python Tkinter를 사용하여 기본적인 파일 탐색기를 성공적으로 만들었습니다. 그래픽 사용자 인터페이스를 만들고 파일 목록을 채우고 사용자가 디렉토리를 선택할 수 있도록 하는 방법을 배웠습니다. 여기서 추가적인 기능, 예를 들어 파일 작업, 컨텍스트 메뉴 및 아이콘 표시와 같은 추가 기능을 추가하여 파일 탐색기를 더욱 향상시킬 수 있습니다.
[관련글]
[정보 및 유용한 팁] - 챗GPT 란? (CHAT GPT 사용)
[파이썬 (pythoon)] - 파이썬 Tkinter를 사용하여 캘린더 달력 프로그램 만들기
[파이썬 (pythoon)] - 파이썬 벽돌깨기 게임 만들기 - python tkinter game
[파이썬 (pythoon)] - Python Tkinter를 이용한 텍스트 편집기(Text Editor) 만들기
'파이썬 (pythoon)' 카테고리의 다른 글
파이썬 Tkinter 이미지 뷰어 프로그램 만들기 (0) | 2023.06.17 |
---|---|
Python tkinter 제곱근, 로그, sin 각도 공업용 함수 계산기 만들기 (1) | 2023.06.17 |
Python Tkinter 애니메이션, canvas, update() (0) | 2023.06.17 |
Python Tkinter에서 시작 화면 만들기 (0) | 2023.06.16 |
Python Tkinter Scroll (스크롤) 사용법 (0) | 2023.06.15 |