강의노트 Filedialog
강의노트
• 조회수 570
• 댓글 0
• 작성 1년 전
• 수정 3주 전
filedialog
tkinter.filedialog는 파일을 열거나 저장하는 창(다이얼로그) 을 띄워주는 모듈이다.
우리가 프로그램에서 파일을 선택할 수 있도록 도와준다.
예: 메모장 → "파일 → 열기" 메뉴 클릭 시 나타나는 창과 비슷하다
기본 사용법
filedialog를 사용하기 위해서는 먼저 모듈을 불러온다.
from tkinter import filedialog
파이썬은 파일들을 다루는 것에 대한 다양한 다이알로그를 제공한다.
filedialog.asksaveasfilename() # 저장할 파일 이름을 지정받음
filedialog.asksaveasfile()
filedialog.askopenfilename() # 파일을 선택해서 경로(문자열)만 가져옴
filedialog.askopenfile()
filedialog.askdirectory() # 폴더 선택 창을 띄움
filedialog.askopenfilenames() # 파일을 선택해서 경로(문자열)만 가져옴
filedialog.askopenfiles()
간단한 예제
파일 열기
import tkinter as tk
from tkinter import filedialog
def open_file():
file_path = filedialog.askopenfilename(
title="파일 선택하기",
filetypes=(("텍스트 파일", "*.txt"), ("모든 파일", "*.*"))
)
if file_path:
label.config(text=f"선택된 파일: {file_path}")
root = tk.Tk()
root.title("파일 열기 예제")
label = tk.Label(root, text="아직 파일이 선택되지 않았습니다.")
label.pack(pady=10)
button = tk.Button(root, text="파일 열기", command=open_file)
button.pack(pady=10)
root.mainloop()
파일 저장
import tkinter as tk
from tkinter import filedialog
def save_file():
file_path = filedialog.asksaveasfilename(
title="저장할 파일 선택하기",
defaultextension=".txt",
filetypes=(("텍스트 파일", "*.txt"), ("모든 파일", "*.*"))
)
if file_path:
with open(file_path, "w") as f:
f.write("여기에 저장된 내용이 들어갑니다.")
label.config(text=f"저장된 파일: {file_path}")
root = tk.Tk()
root.title("파일 저장 예제")
label = tk.Label(root, text="아직 저장되지 않았습니다.")
label.pack(pady=10)
button = tk.Button(root, text="파일 저장", command=save_file)
button.pack(pady=10)
root.mainloop()
폴더 선택
import tkinter as tk
from tkinter import filedialog
def select_folder():
folder = filedialog.askdirectory(title="폴더 선택하기")
if folder:
label.config(text=f"선택된 폴더: {folder}")
root = tk.Tk()
root.title("폴더 선택 예제")
label = tk.Label(root, text="아직 폴더가 선택되지 않았습니다.")
label.pack(pady=10)
button = tk.Button(root, text="폴더 선택", command=select_folder)
button.pack(pady=10)
root.mainloop()
연습문제
- 버튼을 눌러 파일을 선택하면, 선택한 파일의 경로를 라벨에 출력하기.
- 여러 개의 파일을 선택하면, 선택한 파일 경로들을 라벨에 모두 출력하기.
- 텍스트 입력창에 적은 내용을 asksaveasfilename()을 사용해 저장하기.
- 폴더를 선택하면, 그 폴더 안에 있는 파일 목록을 출력하기.
정답 : 1번
import tkinter as tk
from tkinter import filedialog
def select_file():
file_path = filedialog.askopenfilename()
if file_path:
label.config(text=file_path)
root = tk.Tk()
root.title("과제 1")
label = tk.Label(root, text="파일을 선택하세요.")
label.pack(pady=10)
button = tk.Button(root, text="파일 선택", command=select_file)
button.pack(pady=10)
root.mainloop()
2번
import tkinter as tk
from tkinter import filedialog
def select_files():
file_paths = filedialog.askopenfilenames()
if file_paths:
label.config(text="\n".join(file_paths))
root = tk.Tk()
root.title("과제 2")
label = tk.Label(root, text="여러 파일을 선택하세요.")
label.pack(pady=10)
button = tk.Button(root, text="파일 선택", command=select_files)
button.pack(pady=10)
root.mainloop()
3번
import tkinter as tk
from tkinter import filedialog
def save_text():
file_path = filedialog.asksaveasfilename(
defaultextension=".txt",
filetypes=(("텍스트 파일", "*.txt"), ("모든 파일", "*.*"))
)
if file_path:
with open(file_path, "w") as f:
f.write(textbox.get("1.0", tk.END))
label.config(text=f"저장 완료: {file_path}")
root = tk.Tk()
root.title("과제 3")
textbox = tk.Text(root, height=5, width=40)
textbox.pack(pady=10)
button = tk.Button(root, text="저장하기", command=save_text)
button.pack(pady=5)
label = tk.Label(root, text="저장할 내용을 입력 후 버튼을 누르세요.")
label.pack(pady=5)
root.mainloop()
4번
import tkinter as tk
from tkinter import filedialog
import os
def show_files():
folder = filedialog.askdirectory()
if folder:
files = os.listdir(folder)
label.config(text="\n".join(files))
root = tk.Tk()
root.title("과제 4")
button = tk.Button(root, text="폴더 선택", command=show_files)
button.pack(pady=10)
label = tk.Label(root, text="폴더를 선택하세요.")
label.pack(pady=10)
root.mainloop()
로그인 하면 댓글을 쓸 수 있습니다.