내가 직접 만든 GUI 라이브러리로 데스크톱용 워들을 만들었어요!
Source: Dev.to

Python에서 데스크톱 GUI를 개발할 때는 저수준이거나 제한적인 프레임워크를 사용하게 되는 경우가 많습니다. 이를 해결하고자 저는 PyUIKit이라는 오픈소스, 컴포넌트 기반 Python GUI 라이브러리를 CustomTkinter 위에 구축했습니다. 목표는 웹처럼 간단한 문법으로 GUI를 효율적으로 만들 수 있게 하는 것입니다. 현재 PyUIKit은 계속 업데이트 중이며, 아직 완벽하게 다듬어지지는 않았지만 충분히 사용할 수 있습니다.
라이브러리를 테스트하기 위해 데스크톱 Wordle 클론을 만들었으며, 이를 통해 현재의 한계점과 개선이 필요한 부분을 파악할 수 있었습니다.
개요
데스크톱 Wordle 앱은 다음과 같은 기능을 포함합니다:
- 다섯 글자 단어를 맞추기 위한 6번의 시도
- 450개 이상의 단어 목록에서 무작위 단어 선택
- 피드백을 위한 색상 표시 타일: 초록 ✅, 노랑 ⚠️, 회색 ❌
- 사용자 피드백을 위한 토스트 알림

PyUIKit GUI 예시
PyUIKit을 사용하면 UI 컴포넌트를 중첩된 웹‑같은 구조로 구성할 수 있습니다:
from pyuikit import Body, Div, Input
from pyuikit.components import Text, Button
app = Body(resizable=(False, False), height=600, width=800, title='Wordle')
Div(
height=600,
width=800,
bg_color='#121213',
children=[
Text(text="WORDLE", font_size=30, color="white"),
Div(horizontal=True, nested=True, children=[
Input(id='row1_col1', width=50, height=50, multiline=True),
Button(text="Submit", on_click=lambda: handlesubmit(1))
])
]
)
app.run()
Wordle 로직 처리
def handlesubmit(rownum):
letters = [Input.get_input_text(f'row{rownum}_col{i+1}') for i in range(5)]
# 두 번에 걸친 검사: 먼저 초록, 그 다음 노랑/회색
# 정답이 맞았거나 시도가 소진됐을 때 토스트 피드백 제공
발견된 제한 사항
- 단일 라인
Input컴포넌트는 사용자 정의 높이를 지정할 수 없음 - 폰트 커스터마이징이 제한적임
- 동적 배경색 업데이트가 완전히 지원되지 않음
PyUIKit 향후 개선 방안
- 더 쉽고 간결한 업데이트 함수 제공
- 유연한 UI 구성을 위한
Div레이아웃 개선 - 입력 처리, 스타일링, 반응성 향상
결론
이번 Wordle 프로젝트는 PyUIKit의 현재 한계를 파악하고 향후 발전 방향을 잡는 실용적인 스트레스 테스트 역할을 했습니다. 아직 PyUIKit이 더 성숙한 GUI 프레임워크와 경쟁하기엔 이르지만, 활발히 개발 중이며 이와 같은 프로젝트를 통해 약점을 발견하고 API를 다듬으며 앞으로의 개선점을 설계할 수 있습니다.
프로젝트가 마음에 드신다면 GitHub 저장소에 별(star)을 눌러 주세요.
PyUIKit 링크
- PyPI:
- Docs & Quickstart:
- GitHub Repo: