[Python] 31. Tkinter GUI 만들기

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 프로그램을 구축할 수 있습니다.
각 위젯을 잘 이해하고 필요에 맞게 조합하면 사용자에게 편리한 인터페이스를 제공하는 애플리케이션을 만들 수 있습니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤