Tkinter Open File Dialog

2024. 3. 22. 18:26GUI/tkinter

요약 : 이 튜토리얼에서는

 

Tkinter 애플리케이션에서 열린 파일 대화 상자를 표시하는 방법을 배웁니다.

Tkinter 파일 열기 대화 상자 기능 소개

파일 시스템을 다루는 Tkinter 애플리케이션을 개발할 때 파일 선택을 허용하는 대화 상자를 제공해야 합니다.

이를 위해 tkinter.filedialog 모듈을 사용할 수 있습니다. 다음 단계에서는 열린 파일 대화 상자를 표시하는 방법을 보여줍니다.

먼저 tkinter.filedialog 모듈을 가져옵니다.

In [ ]:
from tkinter import filedialog as fd

둘째, 단일 파일 선택을 허용하는 대화 상자를 표시하는 fd.askopenfilename() 함수를 호출합니다.

In [ ]:
filename = fd.askopenfilename()

이 askopenfilename() 함수는 선택한 파일 이름을 반환합니다.

또한 askopenfilename()는 대화 상자에 표시되는 초기 디렉터리나 확장자를 기준으로 파일을 필터링하는 등 기타 유용한 옵션도 지원합니다.

다음 프로그램은 버튼을 표시합니다.

 

 

버튼을 클릭하면 파일 대화 상자가 열립니다.

 

 

파일을 선택하면 프로그램은 선택한 파일의 전체 경로를 표시합니다.

 

프로그램:

In [ ]:
import tkinter as tk
from tkinter import ttk
from tkinter import filedialog as fd
from tkinter.messagebox import showinfo

# create the root window
root = tk.Tk()
root.title('Tkinter Open File Dialog')
root.resizable(False, False)
root.geometry('300x150')


def select_file():
    filetypes = (
        ('text files', '*.txt'),
        ('All files', '*.*')
    )

    filename = fd.askopenfilename(
        title='Open a file',
        initialdir='/',
        filetypes=filetypes)

    showinfo(
        title='Selected File',
        message=filename
    )


# open button
open_button = ttk.Button(
    root,
    text='Open a File',
    command=select_file
)

open_button.pack(expand=True)


# run the application
root.mainloop()

여러 파일 선택

askopenfilenames() 함수는 여러 파일을 선택할 수 있는 파일 대화 상자를 표시합니다. 선택한 파일 이름을 튜플로 반환합니다. 예를 들어:

In [ ]:
import tkinter as tk
from tkinter import ttk
from tkinter import filedialog as fd
from tkinter.messagebox import showinfo

# create the root window
root = tk.Tk()
root.title('Tkinter File Dialog')
root.resizable(False, False)
root.geometry('300x150')


def select_files():
    filetypes = (
        ('text files', '*.txt'),
        ('All files', '*.*')
    )

    filenames = fd.askopenfilenames(
        title='Open files',
        initialdir='/',
        filetypes=filetypes)

    showinfo(
        title='Selected Files',
        message=filenames
    )


# open button
open_button = ttk.Button(
    root,
    text='Open Files',
    command=select_files
)

open_button.pack(expand=True)

root.mainloop()

파일 직접 열기

선택한 파일 이름을 얻은 후 open() 메소드를 사용하여 열 수 있습니다.

더욱 편리하게 하기 위해 tkinter.filedialog 모듈은 하나 이상의 파일을 선택하고 파일 개체를 직접 반환할 수 있는 몇 가지 기능도 제공합니다.

이 askopenfile() 함수는 파일 대화 상자를 표시하고 선택한 파일의 파일 객체를 반환합니다.

In [ ]:
f = fd.askopenfile()

그리고 askopenfiles() 함수는 파일 대화 상자를 표시하고 선택한 파일의 파일 객체를 반환합니다.

In [ ]:
f = fd.askopenfiles()

다음 프로그램은 askopenfile()함수를 사용하는 방법을 보여줍니다.

 

텍스트 파일을 열고 텍스트 위젯에 파일 내용을 표시할 수 있습니다.

In [ ]:
import tkinter as tk
from tkinter import ttk
from tkinter import filedialog as fd

# Root window
root = tk.Tk()
root.title('Display a Text File')
root.resizable(False, False)
root.geometry('550x250')

# Text editor
text = tk.Text(root, height=12)
text.grid(column=0, row=0, sticky='nsew')


def open_text_file():
    # file type
    filetypes = (
        ('text files', '*.txt'),
        ('All files', '*.*')
    )
    # show the open file dialog
    f = fd.askopenfile(filetypes=filetypes)
    # read the text file and show its content on the Text
    text.insert('1.0', f.readlines())


# open file button
open_button = ttk.Button(
    root,
    text='Open a File',
    command=open_text_file
)

open_button.grid(column=0, row=1, sticky='w', padx=10, pady=10)


root.mainloop()

요약

  • askopenfilename() 함수를 사용하면 사용자가 하나의 파일을 선택할 수 있는 파일 열기 대화 상자를 표시할 수 있습니다.
  • askopenfilenames() 함수를 사용하면 사용자가 여러 파일을 선택할 수 있는 파일 열기 대화 상자를 표시할 수 있습니다.
  • askopenfile() 또는 askopenfiles() 함수를 사용하여 사용자가 하나 또는 여러 파일을 선택하고 파일 또는 여러 파일 개체를 받을 수 있는 파일 열기 대화 상자를 표시합니다.

'GUI > tkinter' 카테고리의 다른 글

Tkinter Menubutton  (0) 2024.03.24
Tkinter Menu  (0) 2024.03.23
Tkinter Color Chooser  (0) 2024.03.21
Tkinter askretrycancel  (0) 2024.03.20
Tkinter askokcancel  (0) 2024.03.19