파이썬 (pythoon)

Python Tkinter 파일 탐색기(FileDialog) 만들기 방법

working for you 2023. 6. 17. 13:40
반응형

파이썬 프로그램을 만들때, 내 컴퓨터에 사진이나, 파일을 불러오는 경우가 많이 있습니다. 이때 사용하는 것이 파일다이얼로그인데요, 이번 글에서는 이 내용에 대해 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

실행화면

파이썬 tkinter 파일다이얼로그
파이썬 tkinter 파일탐색기
python tkinter 파일열기

  1. os와 tkinter 라이브러리를 임포트합니다. filedialog는 tkinter 모듈에서 파일 대화상자를 사용하기 위해 추가로 임포트합니다.
  2. FileExplorer 클래스를 정의합니다. 이 클래스는 tkinter.Tk 클래스를 상속받아 파일 탐색기 애플리케이션의 메인 창 역할을 합니다. __init__ 메서드에서는 상속받은 Tk 클래스의 생성자를 호출하여 창의 제목과 크기를 설정하고, create_widgets 메서드를 호출하여 위젯을 생성합니다.
  3. create_widgets 메서드에서는 파일 탐색기의 위젯을 생성합니다. file_frame은 파일 목록을 표시할 Frame 위젯이고, file_listbox는 파일과 디렉토리를 표시할 Listbox 위젯입니다. select_button은 디렉토리 선택 버튼으로, 사용자가 클릭하면 select_directory 함수가 호출됩니다.
  4. load_directory 함수는 주어진 디렉토리의 내용으로 파일 목록을 채우는 역할을 합니다. os.listdir 함수를 사용하여 디렉토리의 파일과 디렉토리를 가져온 후, file_listbox 위젯에 추가합니다.
  5. select_directory 함수는 파일 대화상자를 통해 사용자에게 디렉토리 선택을 요청합니다. 선택한 디렉토리가 있다면, load_directory 함수를 호출하여 파일 목록을 업데이트합니다.
  6. if __name__ == "__main__": 구문을 사용하여 스크립트가 직접 실행될 때만 FileExplorer 클래스의 인스턴스를 생성하고 Tkinter 이벤트 루프를 실행합니다. 이를 통해 스크립트가 다른 모듈로 임포트될 때는 실행되지 않습니다.

 

 

결론 및 의견

Python Tkinter를 사용하여 기본적인 파일 탐색기를 성공적으로 만들었습니다. 그래픽 사용자 인터페이스를 만들고 파일 목록을 채우고 사용자가 디렉토리를 선택할 수 있도록 하는 방법을 배웠습니다. 여기서 추가적인 기능, 예를 들어 파일 작업, 컨텍스트 메뉴 및 아이콘 표시와 같은 추가 기능을 추가하여 파일 탐색기를 더욱 향상시킬 수 있습니다.

 

 

[관련글]

[정보 및 유용한 팁] - 챗GPT 란? (CHAT GPT 사용)

 

챗GPT 란? (CHAT GPT 사용)

챗GPT 란 무엇일까요? 요즘 너무 핫하다 못해 마치 옆에 있는 선생님처럼 느껴지는 이 인공지능 AI에 대해서 이해하기 쉽게 정리하려 합니다. 결론적으로 챗GPT에게 질문을 하면, 형식적인 답이 아

2toy.net

[파이썬 (pythoon)] - 파이썬 Tkinter를 사용하여 캘린더 달력 프로그램 만들기

 

파이썬 Tkinter를 사용하여 캘린더 달력 프로그램 만들기

파이썬 Tkinter를 사용하여 캘린더 달력 프로그램 만들기 방법을 살펴봅니다. Tkinter는 그래픽 사용자 인터페이스를 구축하는 편리한 방법을 제공하며 강력한 기능을 통해 기능적인 달력 응용 프

2toy.net

[파이썬 (pythoon)] - 파이썬 벽돌깨기 게임 만들기 - python tkinter game

 

파이썬 벽돌깨기 게임 만들기 - python tkinter game

Python을 활용하여 Tkinter의 기능을 최대한 적용 후 몇줄 안되는 코딩으로 파이썬 벽돌깨기 게임 만들기 및 방법을 알아보려 합니다. pygame 라이브러리 없이 Canvas 위젯을 사용해서 생각보다 어렵지

2toy.net

[파이썬 (pythoon)] - Python Tkinter를 이용한 텍스트 편집기(Text Editor) 만들기

 

Python Tkinter를 이용한 텍스트 편집기(Text Editor) 만들기

파이썬 GUI 툴킷인 Tkinter는 Python과 함께 제공되며 사용자 친화적이고 효율적인 대화형 애플리케이션을 만들 수 있는 방법을 제공합니다. 이번 글에서는 Python Tkinter를 사용하여 텍스트 편집기(text

2toy.net

[html 자바스크립트 study] - calculator css 계산기 만들기 디자인

 

calculator css 계산기 만들기 디자인

CSS는 웹 개발에서 디자인과 스타일을 구축하는 핵심 요소입니다. 이 글에서는 CSS를 활용하여 간단한 계산기를 디자인하는 방법을 알아보고자 합니다. 예시 코드와 함께 실제로 계산기를 만들어

2toy.net

반응형