Chapter 20. Tkinter 기초
Tkinter는 파이썬에서 GUI(Graphic User Interface) 프로그램을 만들기 위한 기본 라이브러리입니다.
GUI 프로그램은 마우스로 버튼을 클릭하고, 창(Window)을 이용하여 사용하는 프로그램을 의미합니다.
예를 들어,
- 메모장
- 계산기
- 회원관리 프로그램
- 게시판 프로그램
등은 모두 GUI 프로그램입니다.
Tkinter는 파이썬에 기본 포함되어 있으므로 별도의 설치 없이 사용할 수 있습니다.
콘솔 프로그램
이름 : 홍길동
나이 : 20
텍스트를 입력하여 사용하는 프로그램입니다.
GUI 프로그램

버튼과 입력창을 이용하여 사용할 수 있습니다.
- 파이썬 기본 제공
- 설치가 필요 없다
- 배우기 쉽다
- 작은 프로그램 제작에 적합하다
- Windows, macOS, Linux에서 사용할 수 있다
import tkinter as tk
Window는 프로그램이 실행될 때 나타나는 메인 창(Main Window)입니다. 모든 GUI 프로그램은 Window에서 시작합니다.
import tkinter as tk window = tk.Tk() window.mainloop()
실행하면 빈 창이 나타납니다.
import tkinter as tk
window = tk.Tk()
window.title("회원관리 프로그램")
window.mainloop()
window.geometry("500x300")
가로 500픽셀, 세로 300픽셀입니다.
import tkinter as tk
window = tk.Tk()
window.title("Python GUI")
window.geometry("600x400")
window.mainloop()
window.resizable(False, False)
가로와 세로 크기를 변경할 수 없게 만듭니다.
window.configure(bg="lightblue")
window.destroy()
프로그램을 종료합니다.
Frame은 여러 개의 위젯(Widget)을 묶어 관리하는 컨테이너(Container)입니다. 복잡한 화면을 만들 때 많이 사용됩니다.
frame = tk.Frame(window)
frame.pack()
import tkinter as tk window = tk.Tk() frame = tk.Frame(window) frame.pack() window.mainloop()
frame = tk.Frame(
window,
bg="yellow",
width=300,
height=200
)
label = tk.Label(
frame,
text="회원관리"
)
label.pack()
top = tk.Frame(window) center = tk.Frame(window) bottom = tk.Frame(window) top.pack() center.pack() bottom.pack()
실무에서는 화면을 여러 개의 Frame으로 나누어 구성합니다.
Layout은 화면에 위젯을 배치하는 방법입니다.
Tkinter에는 세 가지 레이아웃이 있습니다.
- pack() : 간단
- grid() : 표형태 row=0,column=0
- place() : 좌표지정
가장 간단한 배치 방법입니다.
button = tk.Button(
window,
text="등록"
)
button.pack()
button.pack(side="left") button.pack(side="right")
행(Row)과 열(Column) 형태로 배치합니다.
가장 많이 사용하는 방식입니다.
import tkinter as tk
window = tk.Tk()
window.title("Python GUI")
window.geometry("600x400")
tk.Label(window,text="이름").grid(row=0,column=0)
tk.Entry(window).grid(row=0,column=1)
tk.Label(window,text="나이").grid(row=1,column=0)
tk.Entry(window).grid(row=1,column=1)
window.mainloop()
절대 좌표를 이용하여 배치합니다.
button.place(
x=100,
y=50
)
원하는 위치에 자유롭게 배치할 수 있습니다.
| 방식 | 특징 |
|---|---|
| pack(fill) | 가장 간단 |
| grid(row=0, column=0) | 표 형태 배치 |
| place(x=0, y=0) | 좌표 지정 |
실무에서는 grid()를 가장 많이 사용합니다.
import tkinter as tk
window = tk.Tk()
window.title("회원관리")
tk.Label(window,text="이름").grid(row=0,column=0)
tk.Entry(window).grid(row=0,column=1)
tk.Label(window,text="나이").grid(row=1,column=0)
tk.Entry(window).grid(row=1,column=1)
tk.Button(
window,
text="등록"
).grid(row=2,column=0,columnspan=2)
window.mainloop()
실행 화면

Window
│
├── Frame
│ ├── Label
│ ├── Entry
│ ├── Button
│
└── Frame
├── Listbox
├── Scrollbar
import tkinter as tk
window = tk.Tk()
window.title("회원관리 프로그램")
window.geometry("400x250")
frame = tk.Frame(window)
frame.pack(pady=20)
tk.Label(frame,text="이름").grid(row=0,column=0,padx=10,pady=5)
tk.Entry(frame).grid(row=0,column=1)
tk.Label(frame,text="나이").grid(row=1,column=0,padx=10,pady=5)
tk.Entry(frame).grid(row=1,column=1)
tk.Button(frame,text="등록").grid(row=2,column=0,columnspan=2,pady=10)
window.mainloop()

- Tkinter는 파이썬의 기본 GUI 라이브러리이다.
- Window는 GUI 프로그램의 메인 창이다.
- Frame은 여러 위젯을 묶어 관리하는 컨테이너이다.
- Layout은 위젯을 배치하는 방법으로 pack, grid, place가 있다.
- 회원 입력 화면을 쉽게 만들 수 있다.