Tkinter 애플리케이션에서 버튼을 생성하려면 Button 위젯을 사용합니다. 버튼은 애플리케이션 실행 중 특정 이벤트를 처리하는 데 활용되며, Button(parent, text, **options) 생성자를 정의하는 방식으로 손쉽게 만들 수 있습니다.
이번 글에서는 클릭했을 때 사용자에게 시스템 탐색기에서 파일을 선택하도록 요청하는 찾아보기(Browse) 버튼을 만들어 보겠습니다. 파일 선택 대화상자를 띄우려면 tkinter 라이브러리의 filedialog 패키지를 사용해야 합니다. 다음 명령어로 filedialog를 임포트할 수 있습니다.
from tkinter import filedialog
패키지를 임포트한 후에는 이를 활용해 파이썬 파일(.py)을 열고 선택하는 대화상자를 생성할 수 있으며, 선택된 파일에 포함된 문자 수를 반환하도록 구현해 보겠습니다.
예제 코드
# 필요한 라이브러리 임포트
from tkinter import *
from tkinter import ttk, filedialog
from tkinter.filedialog import askopenfile
# tkinter 프레임 인스턴스 생성
win = Tk()
# tkinter 프레임 크기 설정
win.geometry("700x350")
def open_file():
file = filedialog.askopenfile(mode='r', filetypes=[('Python Files', '*.py')])
if file:
content = file.read()
file.close()
print("%d characters in this file" % len(content))
# Label 위젯 추가
label = Label(win, text="버튼을 클릭하여 파일을 찾아보세요", font=('Georgia 13'))
label.pack(pady=10)
# 찾아보기 버튼 생성
ttk.Button(win, text="Browse", command=open_file).pack(pady=20)
win.mainloop()실행 결과
위 코드를 실행하면 아래와 같은 화면이 나타납니다. Browse 버튼을 클릭하면 시스템 탐색기가 열리고, 사용자는 원하는 파이썬 파일을 선택할 수 있습니다.
파일이 정상적으로 선택되면 해당 파일의 내용을 읽어 들인 뒤 총 문자 수가 콘솔에 출력됩니다. 이처럼 filedialog.askopenfile() 메서드를 활용하면 파일 형식 필터(filetypes)를 지정하여 특정 확장자의 파일만 선택하도록 제한할 수도 있습니다.
