본문 바로가기
데이터 분석/IT

Python으로 GUI 프로그램 만들기

by 데이터한걸음 2026. 5. 29.

1. 왜 바이브 코딩으로 만든 GUI 프로그램은 수정하기 어려울까?

최근에는 AI를 활용하여 간단한 프로그램을 만드는 사람이 정말 많아졌습니다.
저 또한, Cursor AI를 활용하여 JSON 파일 뷰어를 비교적 쉽게 만들 수 있었습니다.
『Cursor AI 설치 방법』중 JSON viewer 만들기

실제로 처음 GUI를 만들 때는 상당히 신기했습니다.
파일 버튼을 만들고 클릭하여 불러오는 동작까지 자동으로 만들어 줍니다.

문제는 그 다음부터입니다.
 
파일 프로그램에서 수정하는 기능, 저장하는 기능, 통계처리 기능까지 추가하려고 하면
자꾸 코드가 꼬이고, 버튼 하나 수정했는데, 화면이 이전과 달라지고 포기하게 됩니다.

이는 사용자와 상호작용이 서로 연결되어 있고, 화면과 데이터가 동시에 움직이기 때문입니다.

결국에는 코드의 유지 보수는 AI이가 아니라 사람이 하는 것이 편하다는 것을 알게 되었습니다.
코드에 대해 모든 것을 아는 것 보다는 어떻게 코드가 돌아가는 지에 대한 흐름은 알고 있어야
그에 알맞게 AI에게 명령할 수 있습니다.

이번 글에서는 tkinter 사용법 자체보다 GUI 프로그램이 어떤 구조로 동작하는지,
GUI 프로그램은 일반 Python 코드와 뭐가 다를지,
그리고 유지보수를 위해 꼭 알아야 하는 핵심 개념들을 정리해보겠습니다.

이 글을 읽고 GUI 세계가 어떤 것인지만 알아보는 기회가 되었으면 좋겠습니다.


2. GUI란 무엇인가?

GUI를 이해하기 이전에, Python을 터미널에서 실행하거나,
명령어를 입력하는 방식은 
CLI(Command Line Interface)라고 부릅니다.
이런 명령어 기반은 컴퓨터 언어가 익숙하지 않으면 일반인이 사용하기가  어렵습니다.

그래서 흔히 메모장, 계산기, 크롬 브라우저, 카카오톡, 엑셀과 같은
우리가 사용하는 대부분이 프로그램을 GUI입니다.
Graphical User Interface의 약자로,
 “화면을 조작하여 소통하는 프로그램” 입니다.
화면 조작의 방식에는 버튼 클릭, 텍스트 입력, 메뉴 선택, 창 이동 등이 모두 GUI입니다.

이런 차이는 명령어 방식인 CLI는 코드의 순서대로 위에서 아래로 순차적으로 실행되지만,
GUI는 화면을 보여주고 사용자의 행동( 입력 및 클릭 )에 따라 실행됩니다.
그래서 각각의 행동에 따라 기능(Function)를 설정하고 그 기능이 실행되는 것을 이벤트(Event)라고 합니다.
GUI는 이벤트 기반으로 작동하는 것이 중요한 차이입니다.


3. 기본적인 용어

python에서 GUI를 만들기 위해 기본으로 제공해주는 tkinter 라이브러리가 있습니다.
기본적으로 지원해주는 라이브러리 답게 구조가 단순하여 배우기 쉽습니다.
다만 디자인이 옛날 UI라서 단순하게 개인용으로 사용하기 무방합니다.
나중에는 PyQt, PySide 같은 라이브러리를 활용하여 더욱 현대적인 분위기로 제작할 수 있습니다.

기본적인 용어나 구조를 알아야 향후 AI에게 업무를 시킬때에도 적절한 용어를 사용하여 오류를 줄릴 수 있습니다.
여기서 사용하는 용어는 tkinter에서 사용하는 용어와 명령어 위주로 정리하여 명칭이 다를 수 있습니다.


3.1. Widget(위젯)

위젯(Widget)은 프로그램에 보여주는 화면의 요소를 말합니다.
예를 들어,

  • 라벨(Label): 텍스트와 이미지를 보여 주는 요소
  • 입력창(Entry): 한 줄을 입력할 수 있는 요소
  • 텍스트 영역(Text): 여러 줄을 입력 할 수 있는 요소
  • 버튼(Button): 클릭할 수 있는 요소
  • 체크박스(Checkbutton): 여러 개를 동시에 선택이 가능한 요소
  • 라디오 버튼(Radiobutton): 여러 개중 하나만 선택할 수 있는 요소
  • 리스트 박스(Listbox): 항목 중에서 선택할 수 있는 요소
  • 드롭다운(Combobox): 드롭다운으로 선택 할 수 있는 요소
  • 메뉴바(Menu): 상단에 여러 기능을 보여 주는 요소

등 있습니다.
즉, 
GUI 프로그램은 여러 Widget을 배치해서 만드는 구조입니다.


3.2. Window(윈도우)

GUI 프로그램의 가장 바깥 화면으로 흔히 창이라고 부룹니다.
생각해보니 윈도우를 직역하면 창이네요..
Window 안에 버튼과 입력창 같은 Widget들이 들어갑니다.

윈도우 창의 제목(tiltle), 크기(geometry), 배경색(configure)을 설정할 수 있습니다.
크기는 가로 및 세로 고정이 가능하며, 최대 크기와 최소 크기를 설정 가능합니다.


3.3. Layout(레이아웃)

레이아웃은 “위젯을 어디에 배치할 것인가”를 결정하는 개념입니다.
흔히 사용하는 파워 포인트의 화면에서 
배치 구조는 위에서 아래로 쌓기, 격자 형태 배치, 절대 좌표 배치가 있습니다.

Frame을 이용하여 상단, 중앙, 하단 등 구역을 액자처럼 구성할 수 있습니다.

처음에는 단순해 보이지만,
GUI에서는 “기능 구현”만큼 “배치 구조”가 중요합니다.


3.4. Event(이벤트)

이벤트는 사용자의 행동를 말합니다.
예를 들어,

  • 버튼 클릭
  • 키 입력
  • 마우스 이동
  • 스크롤

등이 이벤트입니다.

GUI 프로그램은 이 이벤트를 감지해서 동작합니다.


3.5. Callback Function(콜백 함수)

이벤트가 발생했을 때 실행되는 함수입니다.
예를 들어, “저장 버튼 클릭 시 저장 실행” 같은 구조입니다.
즉 사용자가 프로그램과 상호작용를 하는 연결 구조로서 중요합니다.


3.6. Main Loop(메인 루프)

GUI와 명령어 기반 프로그램과의 가장 큰 차이를 보여주는 개념입니다.
프로그램은 계속 실행되면서 사용자의 행동을 기다려 주는 것입니다.
이 상태를 유지하는 반복 구조가 Main Loop입니다.

다르게 말하면 “프로그램이 꺼지지 않고 계속 대기하는 상태”입니다.
일반적인 CLI 프로그램은 한번 실행하면 바로 꺼지는 특징을 가지고 있지만
GUI 프로그램은 이 루프 안에서 이벤트를 계속 처리합니다.


3.7. State(상태)

프로그램은 사용자의 정보를 저장하고 이를 활용하여 다양한 기능을 지원해야 합니다.
이런 사용자의 정보(data)를 상태(State)라고 하며, 
예를 들어, 로그인 여부, 입력값, 체크박스 상태, 현재 선택된 메뉴가 있습니다.

상태의 변화가 어디서 발생하는 지 이해하는 것이 GUI의 유지 보수의 핵심입니다.
예를 들어:

  • 버튼은 눌렸는데 화면은 안 바뀜
  • 데이터는 수정됐는데 UI는 그대로임
  • 입력창 값이 초기화됨

같은 문제들이 발생합니다.


4. GUI를 처음 배울 때 가장 중요한 것은 무엇일까?

누구나 처음 배울때는 보통 기능 구현에 집중하게 됩니다.
기능은 이제 AI가 손 쉽게 만들어 줍니다.
하지만 유지보수는 AI가 해주는 것이 아니라 직접해야합니다.
보안과 대용량 코드의 해석의 한계가 있는 AI에게 모든 것을 맡길 수 없습니다.

그래서 가장 중요한 것은 GUI는

  • 화면(Window)
  • 구성 요소(Widget)
  • 사용자 행동(Event)
  • 실행 함수(Callback)
  • 상태(State)

가 서로 연결되어 움직이는 구조입니다.

코드는 AI가 작성을 해주지만은 유지 관리를 위해 코드를 다시 정리하는 것은 사람의 몫입니다.
더 나아가 유지 관리를 위한 기능별 모듈화와 공유를 위한 배포까지가 프로그래밍의 전부입니다.


참고 자료
실전 파이썬 - 파일 리네이머 만들기