Tkinter 는 Python에서 GUI(Graphical User Interface) 애플리케이션을 만드는 데 사용되는 기본 라이브러리입니다.
Tkinter 를 사용하면 버튼, 레이블, 텍스트 입력 상자 등 다양한 위젯을 통해 사용자 인터페이스를 구축할 수 있습니다.
각 위젯의 사용 방법과 간단한 예제를 하나씩 설명드리겠습니다.
Tkinter 설정하기
먼저 Tkinter를 사용하려면 Python 코드에서 tkinter
모듈을 가져와야 합니다.
기본적으로 다음과 같이 Tkinter를 가져오고 기본 윈도우를 생성할 수 있습니다.
import tkinter as tk
# 기본 윈도우 생성
root = tk.Tk()
root.title("Tkinter 기본 예제")
root.geometry("300x200")
# Tkinter 이벤트 루프 실행
root.mainloop()
Tkinter 위젯
Label (레이블)
레이블은 텍스트나 이미지를 표시하는 데 사용됩니다.
사용법:
label = tk.Label(root, text="Hello, Tkinter!")
label.pack()
예제:
import tkinter as tk
root = tk.Tk()
root.title("Label 예제")
root.geometry("300x200")
label = tk.Label(root, text="Hello, Tkinter!")
label.pack()
root.mainloop()
결과:
Button (버튼)
버튼은 사용자가 클릭할 수 있는 위젯으로, 클릭 시 특정 동작(함수)을 수행합니다.
사용법:
button = tk.Button(root, text="클릭하세요", command=함수이름)
button.pack()
예제:
import tkinter as tk
def on_button_click():
label.config(text="버튼이 클릭되었습니다!")
root = tk.Tk()
root.title("Button 예제")
root.geometry("300x200")
label = tk.Label(root, text="Hello, Tkinter!")
label.pack()
button = tk.Button(root, text="클릭하세요", command=on_button_click)
button.pack()
root.mainloop()
결과:
Entry (입력 필드)
Entry 위젯은 한 줄의 텍스트를 입력받는 필드입니다.
사용법:
entry = tk.Entry(root)
entry.pack()
예제:
import tkinter as tk
def show_text():
label.config(text=entry.get())
root = tk.Tk()
root.title("Entry 예제")
root.geometry("300x200")
label = tk.Label(root, text="입력한 텍스트가 여기에 표시됩니다.")
label.pack()
entry = tk.Entry(root)
entry.pack()
button = tk.Button(root, text="텍스트 표시", command=show_text)
button.pack()
root.mainloop()
결과:
Frame (프레임)
Frame은 다른 위젯을 그룹화하거나 배치하는 데 사용되는 컨테이너입니다.
사용법:
frame = tk.Frame(root)
frame.pack()
예제:
import tkinter as tk
root = tk.Tk()
root.title("Frame 예제")
root.geometry("300x200")
frame = tk.Frame(root, borderwidth=2, relief="solid")
frame.pack(padx=10, pady=10)
label = tk.Label(frame, text="이것은 프레임 내부의 레이블입니다.")
label.pack()
button = tk.Button(frame, text="프레임 버튼")
button.pack()
root.mainloop()
결과:
Listbox (리스트박스)
Listbox는 여러 개의 항목을 표시하는 목록입니다.
사용자가 항목을 선택할 수 있습니다.
사용법:
listbox = tk.Listbox(root)
listbox.pack()
예제:
import tkinter as tk
def on_select(event):
selected = listbox.get(listbox.curselection())
label.config(text=f"선택된 항목: {selected}")
root = tk.Tk()
root.title("Listbox 예제")
root.geometry("300x200")
listbox = tk.Listbox(root)
listbox.pack()
items = ["Python", "Java", "C++", "JavaScript"]
for item in items:
listbox.insert(tk.END, item)
listbox.bind("<<ListboxSelect>>", on_select)
label = tk.Label(root, text="항목을 선택하세요.")
label.pack()
root.mainloop()
결과:
MessageBox (메시지 박스)
메시지 박스는 팝업 대화 상자를 표시하는 데 사용됩니다.
사용법:
import tkinter.messagebox as msgbox
msgbox.showinfo("제목", "메시지 내용")
예제:
import tkinter as tk
import tkinter.messagebox as msgbox
def show_message():
msgbox.showinfo("정보", "이것은 메시지 박스입니다!")
root = tk.Tk()
root.title("MessageBox 예제")
root.geometry("300x200")
button = tk.Button(root, text="메시지 박스 열기", command=show_message)
button.pack()
root.mainloop()
결과:
Menu (메뉴)
메뉴는 애플리케이션의 상단에 드롭다운 메뉴를 추가할 때 사용됩니다.
사용법:
menu = tk.Menu(root)
root.config(menu=menu)
예제:
import tkinter as tk
def open_file():
print("파일 열기")
root = tk.Tk()
root.title("Menu 예제")
root.geometry("300x200")
menu = tk.Menu(root)
root.config(menu=menu)
file_menu = tk.Menu(menu, tearoff=0)
menu.add_cascade(label="파일", menu=file_menu)
file_menu.add_command(label="열기", command=open_file)
file_menu.add_separator()
file_menu.add_command(label="종료", command=root.quit)
root.mainloop()
결과:
Combobox (콤보박스)
콤보박스는 드롭다운 목록을 통해 선택할 수 있는 위젯입니다. ttk
모듈에서 제공됩니다.
사용법:
from tkinter import ttk
combobox = ttk.Combobox(root, values=["Option 1", "Option 2", "Option 3"])
combobox.pack()
예제:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.title("Combobox 예제")
root.geometry("300x200")
label = tk.Label(root, text="옵션을 선택하세요.")
label.pack()
combobox = ttk.Combobox(root, values=["Python", "Java", "C++", "JavaScript"])
combobox.pack()
def on_select(event):
label.config(text=f"선택된 옵션: {combobox.get()}")
combobox.bind("<<ComboboxSelected>>", on_select)
root.mainloop()
결과:
Tkinter 위젯 과 사용법 설명을 마치며..
이상으로 Tkinter의 기본 위젯과 그 사용법에 대해 설명드렸습니다.
이 예제들을 활용하여 더 복잡한 UI 프로그램을 구축할 수 있습니다.
각 위젯을 잘 이해하고 필요에 맞게 조합하면 사용자에게 편리한 인터페이스를 제공하는 애플리케이션을 만들 수 있습니다.
[Python] 32. Tkinter 와 Matplotlib 를 사용한 GUI Plot App 만들기
Python에서 데이터를 시각화할 때 Pandas와 Matplotlib는 매우 유용한 도구입니다. 이들 도구를 활용해 데이터 시각화를 위한 GUI 애플리케이션을 만들 때, Tkinter와 함께 사용하면 인터랙티브한 환경을 쉽게 구축할 수 있습니다. 하지만 Mac 환경에서는 몇 가지 호환성 문제가 발생할 수 있는데, 이를 해결하는 방법과 함께 데이터를 기반으로 플롯을 그리고, 이를 Tkinter GUI에 표시하는 방법을 소개하겠습니다.