파이썬에서 GUI 프로그램을 할 때, 어떤 라이브러리를 쓸 지 고민하게 된다.
보통 많이 쓰는 라이브러리로는 PyQT, tkinter, wxPython 정도가 나오기는 한다.
지피티에게 최근에 파이썬 GUI 로 유명한 것 5가지만 알려달라고 해보자.
파이썬 GUI 라이브러리 Top 5
1️⃣ PyQt / PySide
- Qt 프레임워크의 파이썬 바인딩
- PyQt와 PySide는 거의 비슷하지만 라이선스 정책 차이 있음
(PySide는 LGPL, PyQt는 GPL/상용) - 데스크탑 앱 개발에 가장 많이 씀
- Qt Designer로 시각적인 UI 설계 가능
- 다양한 위젯, 네트워크, OpenGL, 데이터베이스 기능 포함
🔍 대표 앱: Anki, Calibre
2️⃣ Tkinter
- 파이썬 표준 라이브러리
(추가 설치 없이 바로 사용 가능) - 간단한 GUI 프로그램 제작에 적합
- 윈도우, macOS, 리눅스 지원
- 기능이 제한적이고 스타일이 약간 구식
🔍 대표 앱: 교육용 툴, 간단한 툴 제작
3️⃣ Kivy
- 크로스 플랫폼 지원 (PC, 모바일, 라즈베리파이)
- GPU 가속 UI 가능
- 터치 스크린, 멀티터치 지원
- 디자인이 모던하고 동적인 UI 제작 가능
🔍 대표 앱: 모바일 앱 프로토타입, 키오스크 UI
4️⃣ Dear ImGui (pyimgui)
- Immediate Mode GUI 방식
- 게임 툴, 실시간 디버깅 툴, 시뮬레이터 UI
- 초고속 렌더링, 오픈GL/DirectX/Metal/Vulkan 연동 가능
- 데스크탑 앱 용도보단 툴 내장 UI용으로 많이 씀
🔍 대표 앱: 인게임 디버그 창, 시뮬레이터 툴
5️⃣ wxPython
- wxWidgets의 파이썬 바인딩
- 네이티브 시스템 위젯을 사용해서 OS에 맞는 UI 제공
- 크로스 플랫폼
- PyQt보단 덜 알려져 있지만 꾸준히 쓰임
🔍 특징: 윈도우 네이티브 UI에 가까운 데스크탑 앱 제작 가능
📊 정리
PyQt/PySide | 풍부한 위젯, 네이티브 UI | 데스크탑 앱 |
Tkinter | 가벼움, 기본 내장 | 간단한 툴 |
Kivy | GPU 가속, 크로스 플랫폼 | 모바일/터치 앱 |
Dear ImGui | 즉시모드, 초고속 | 게임/툴 UI |
wxPython | 네이티브 위젯 | 데스크탑 앱 |
흠. 잘 알려주는데, 오늘은 1번 PyQT/PySide와 4번 ImGUI를 좀 더 자세히 보기로 하자.
일단 PyQT는 라이센스 문제로 인해 상용프로그램 개발에서는 가능하면 제외하게 되고, 그와 유사한 PySide6를 선택하게 된다. PyQT나 PySide나 무거운 면이 있다. 즉, 실제 프로그램 시작할 때나 동작시킬 때 느린 경우가 종종 있다.
ImGUI (아이엠지유아이 라고 읽는다)는 가볍고 빠르게 개발이 가능하다는 장점이 있는데, 문제는... UI자체가 이쁘게 나오지 않는 것 같다. 물론 기능 동작에만 집중하는 경우라면 동작하는게 핵심이지 UI가 이쁜게 무슨 문제겠냐만, 기왕이면 다홍치마라고 UI가 이쁘면 좋기는 한 것 같다. 그런면에서 ImGUI는 실무 개발진에게 빠르게 테스트 용을 만들때 좋은 것 같다.
좀 더 자세히 알아보면 아래와 같다.
📌 ImGui (Dear ImGui)
Immediate Mode GUI 라이브러리
- C++ 기반이지만, Python 바인딩(pyimgui 등)도 있어요.
- 게임 엔진, 시뮬레이터, 툴 개발에 많이 쓰임.
- 렌더링 루프에 포함되어 매 프레임 UI를 그려줌.
- 사용법이 단순하고 직관적임. 코드를 보면:
if (ImGui::Button("Click Me")) {
// 버튼 눌렀을 때 동작
}
- UI 상태가 매 프레임 새로 갱신되므로, 상태를 따로 관리할 필요가 적음.
- 렌더링을 직접 OpenGL/DirectX/Vulkan으로 연결 가능.
- 기본적으로 윈도우 시스템 독립적 (윈도우 창 관리, 메뉴바 같은 OS 네이티브 UI는 없음)
- 스타일이 개발툴/디버깅 툴 같은 느낌 (매끈한 상업용 앱 UI와는 거리가 있음)
- 주로 런타임 디버깅 툴, 프로토타입, 인게임 UI 등에 활용.
✅ 장점
- 매우 빠르고 가벼움.
- 코드에 직접 UI 선언 가능.
- 렌더링 엔진과 잘 통합됨.
❌ 단점
- 일반적인 데스크탑 앱 UI에는 부적합.
- 네이티브 위젯 (파일 다이얼로그, 트레이 아이콘 등) 없음.
- 마우스/키보드 이벤트를 직접 처리해야 함.
📌 PySide6
Qt의 Python 바인딩
- Qt 프레임워크를 Python에서 사용 가능.
- 상태 기반(Immediate Mode가 아님) GUI
- 위젯 기반 GUI (버튼, 리스트, 테이블, 그래프 등)
- 네이티브 느낌의 데스크탑 앱을 쉽게 만들 수 있음.
- 윈도우, macOS, 리눅스 모두 지원
- QML을 활용하면 GPU 가속 UI도 가능
- Qt Designer로 GUI 시각적으로 설계 가능
✅ 장점
- 강력한 데스크탑 앱 개발 가능.
- 네이티브 느낌의 다양한 위젯 제공.
- 이벤트 및 상태 관리 시스템이 체계적.
- 다국어 지원, 네트워크, OpenGL, 스레드, 데이터베이스 등 기능 풍부.
❌ 단점
- 상대적으로 무겁고 복잡.
- 실행 속도가 ImGui보다 느림.
- 렌더링 엔진과의 직접 통합에는 부적합.
📊 둘의 차이 정리
방식 | Immediate Mode GUI | Retained Mode GUI (상태 기반) |
주요 용도 | 게임 툴, 런타임 디버깅, 임베디드 툴 | 데스크탑 애플리케이션 |
렌더링 | 직접 렌더링 엔진 통합 (OpenGL 등) | 네이티브 시스템 창 |
속도 | 매우 빠름 | 상대적으로 느림 |
UI 스타일 | 개발툴/디버그용 UI | 네이티브 또는 커스텀 UI |
이벤트 처리 | 수동 처리 필요 | Qt 이벤트 시스템 |
Python 바인딩 | pyimgui 등 | 공식 PySide6 |
📌 정리
- 게임/시뮬레이션 툴, 실시간 디버깅/개발툴 → ImGui
- 일반 데스크탑 애플리케이션, 데이터 시각화 앱, 유틸리티 앱 → PySide6
결국 어떤 어플리케이션을 만드느냐의 문제인데...
- 난 빠르게 동작하는 것을 보고 싶다 --> ImGUI
- 기왕이면 GUI가 예쁘면 좋겠다. --> PySide6
를 선택하면 될 것 같다.
참고로 둘 다 처음 학습에 많이 어렵지는 않은 것 같다.
단, 무조건 처음에는 간단한 어플리케이션부터 시작해보자.
그럼 이만.
'Python' 카테고리의 다른 글
파이썬 데이터 압축 전송 (0) | 2025.05.24 |
---|---|
파이썬 버전별 특징 (최근 버전이 좋다) (0) | 2025.05.16 |
실시간 시스템에 파이썬 사용 가능성 (0) | 2025.05.11 |
파이썬 GUI 라이브러리 5가지 (0) | 2025.04.29 |
PySide6 에서 윈도우 종료시 다시 한번 확인하기 (0) | 2025.03.30 |