오늘은 파이썬 Tkinter 기초를 활용해 시커먼 도스창을 예쁜 프로그램 창으로 바꾸는 법을 배웁니다. 지난 17편을 통해 파이썬 코드를 실행 파일(.exe)로 포장하여, 파이썬이 설치되지 않은 PC에서도 내 코드를 구동할 수 있는 획기적인 배포 환경을 구축했습니다. 하지만 막상 현장의 팀장님들이나
지난 17편을 통해 파이썬 코드를 실행 파일(.exe)로 포장하여, 파이썬이 설치되지 않은 PC에서도 내 코드를 구동할 수 있는 획기적인 배포 환경을 구축했습니다. 하지만 막상 현장의 팀장님들이나 사무실 여직원들에게 이 파일을 나눠드리면 예상치 못한 불만이 터져 나옵니다.
“대표님, 더블클릭했는데 시커먼 해킹 화면(CMD)이 떴다가 사라지는데요? 바이러스 아니에요?” “아무 창도 안 뜨고 그냥 끝나버리니까, 엑셀이 진짜로 만들어진 건지 불안해서 계속 폴더를 열어보게 됩니다.”
우리는 코드가 깔끔하게 백그라운드에서 실행되도록 만들었지만, 일반 사용자들은 눈앞에 ‘진행 상황’이 나타나지 않으면 컴퓨터가 고장 났다고 생각하거나 작업이 누락될까 봐 극도로 불안해합니다. 그렇다고 시커먼 도스창을 띄워두자니 너무 비전문가 같아 보이죠.
그래서 오늘은 파이썬 Tkinter 기초를 완벽하게 파헤쳐 봅니다. 마우스로 클릭할 수 있고, 글씨를 입력할 수 있는 예쁜 ‘프로그램 창(GUI)’을 직접 만들어 보겠습니다. 시중에 판매되는 소프트웨어처럼 세련된 껍데기를 씌워 내 프로그램의 가치를 10배 이상 올려봅시다. 이번 포스트에서는 파이썬 Tkinter 기초를 통해 여러분의 코딩 실력을 한층 더 업그레이드할 수 있는 기회를 제공하겠습니다.

1. 파이썬 Tkinter 기초: GUI란 무엇이며 왜 필요한가?
우리가 매일 사용하는 엑셀, 카카오톡, 크롬 브라우저 등은 모두 마우스로 아이콘이나 버튼을 누르고 텍스트를 입력할 수 있는 시각적인 화면을 가지고 있습니다. 이를 IT 용어로 GUI(Graphic User Interface, 그래픽 사용자 인터페이스)라고 부릅니다.
파이썬에서 이런 GUI 창을 만들 수 있게 해주는 가장 대표적이고 훌륭한 도구가 바로 Tkinter입니다. 파이썬에는 PyQt 등 여러 GUI 도구가 있지만, 초보자와 실무자에게 Tkinter를 가장 먼저 추천하는 이유는 단 하나입니다. 파이썬을 설치할 때 기본으로 내장(Built-in)되어 있기 때문입니다.
귀찮게 터미널 창을 열고 pip install 명령어를 치며 라이브러리를 설치할 필요 없이, 그저 코드 맨 위에 import tkinter 한 줄만 적어주면 곧바로 나만의 윈도우 창을 만들 수 있습니다.
2. 실무 코드 1단계: 빈 도화지(창) 띄우기
Python
먼저 아무것도 없는 도화지(프로그램 창)를 하나 띄워보겠습니다. 코드는 믿을 수 없을 만큼 간단합니다.
import tkinter as tk
# 1. 메인 창 생성
root = tk.Tk()
# 2. 창 제목과 크기 설정
root.title("방역 현장 날씨 수집기 v1.0")
root.geometry("400x300") # 가로 400, 세로 300 픽셀
# 3. 창을 닫을 때까지 화면에 계속 띄워두기
root.mainloop()
위의 단 세 줄짜리 코드가 파이썬 Tkinter 기초의 핵심 뼈대입니다.
tk.Tk()는 윈도우 운영체제에 “나 프로그램 창 하나 띄울게!”라고 신고하는 명령어입니다.geometry("400x300")를 통해 내 맘대로 창의 크기를 조절할 수 있습니다.- 가장 중요한 것은 맨 마지막 줄의
mainloop()입니다. 이 코드가 없으면 창이 0.1초 만에 켜졌다가 바로 꺼져버립니다. 사용자가 ‘X’ 버튼을 눌러 창을 닫을 때까지 프로그램이 종료되지 않도록 계속 붙잡아두는(Loop) 필수 명령어입니다.
3. 실전 2단계: 텍스트 입력창(Entry)과 실행 버튼(Button) 달기
빈 창만 있으면 껍데기에 불과하겠죠? 이제 이 도화지 위에 ‘어느 지역 날씨를 검색할지’ 글자를 타이핑할 수 있는 입력창(Entry)과, 크롤링을 시작하게 만드는 실행 버튼(Button)을 달아보겠습니다.
Python
import tkinter as tk
import tkinter.messagebox as msgbox
# 1. 버튼을 누르면 실행될 '행동(함수)'을 먼저 정의합니다.
def start_crawling():
# 입력창(entry)에 사용자가 적은 글자를 가져옵니다.
target_area = entry.get()
if target_area == "":
# 아무것도 입력하지 않고 버튼을 누르면 경고창 띄우기
msgbox.showwarning("경고", "방역 지역을 입력해 주세요!")
else:
# ★ 이곳에 16편에서 만든 크롤링 실전 코드가 들어갑니다 ★
# 작업 완료 안내창 띄우기
msgbox.showinfo("알림", f"{target_area} 날씨 수집 및 엑셀 저장이 완료되었습니다!")
# 2. 메인 창 세팅
root = tk.Tk()
root.title("방역 업무 자동화 프로그램")
root.geometry("350x250")
# 3. 안내 문구 (Label)
label = tk.Label(root, text="날씨를 검색할 방역 지역을 입력하세요.\n(예: 화성시, 수원시)", pady=15)
label.pack()
# 4. 텍스트 입력창 (Entry)
entry = tk.Entry(root, width=20)
entry.pack(pady=10) # pady는 위아래 여백을 10만큼 주라는 뜻입니다.
# 5. 실행 버튼 (Button)
# command 옵션에 방금 만든 start_crawling 함수를 연결합니다.
btn = tk.Button(root, text="엑셀 자동화 시작", width=15, height=2, bg="navy", fg="white", command=start_crawling)
btn.pack(pady=10)
root.mainloop()
코드가 조금 길어졌지만 원리는 아주 직관적입니다.
- Label(라벨): 화면에 안내 문구를 적어주는 스티커입니다.
- Entry(엔트리): 사용자가 직접 아이디나 지역명 등을 타이핑할 수 있는 네모난 입력 칸입니다.
- Button(버튼): 마우스로 누를 수 있는 스위치입니다.
bg="navy"는 배경색을 남색으로,fg="white"는 글자색을 흰색으로 꾸며줍니다. - pack(): 라벨, 입력창, 버튼을 만들었다면 반드시
pack()명령어를 붙여주어야 화면에 차곡차곡 위에서부터 아래로 정렬되어 나타납니다.
이 코드를 실행하고 입력창에 “화성시”를 적은 뒤 [엑셀 자동화 시작] 버튼을 누르면, 기분 좋은 알림음과 함께 “화성시 날씨 수집 및 엑셀 저장이 완료되었습니다!”라는 완벽한 팝업창(MessageBox)이 나타납니다!

4. 글을 마치며: 눈에 보여야 진짜다
실무 자동화에서 기능만큼이나 중요한 것이 바로 사용자 경험(UX)입니다. 오늘 다룬 파이썬 Tkinter 기초를 통해, 시커먼 터미널 창을 두려워하는 팀원들에게 친숙한 윈도우 UI를 제공할 수 있게 되었습니다. (더 깊은 기능이 궁금하다면 [파이썬 공식 Tkinter 가이드 문서]를 참고해 보십시오.)
이제 대표님이 만드신 코드는 엑셀 데이터 가공(9편), 웹 데이터 수집(16편), 실행 파일 배포(17편)를 넘어 어엿한 윈도우용 프로그램으로 진화했습니다.
다음 19편에서는 이 프로그램 창에 ‘아이디’와 ‘비밀번호’, 또는 검색하고 싶은 ‘날짜’를 직접 타이핑해 넣을 수 있는 ‘텍스트 입력창(Entry)’을 만들어 더욱 고도화된 시스템을 구축해 보겠습니다.
(이전 글: [17편: 파이썬 exe 변환 – 파이썬 없는 PC에서 내 코드 실행하기] 보러 가기)
