나는 방금 내 Python GUI 라이브러리(PyUIkit)에 주요 업데이트를 배포했습니다
Source: Dev.to
Overview
Python으로 데스크톱 GUI를 만드는 것은 종종 너무 저수준이거나 너무 제한적이라고 느껴졌습니다.
PyUIkit은 웹 레이아웃에서 영감을 받은 현대적인 컴포넌트 기반 GUI 라이브러리로, customtkinter 위에 구축되었습니다. 주요 특징은 다음과 같습니다:
- 컴포넌트 (Button, Switch, Toast 등)
- 레이아웃 컨테이너 (
Div) - 자동 스태킹 (항상
x/y를 지정할 필요 없음) - 간단하고 가독성 높은 API
최신 릴리스에서는 중요한 새로운 기능을 추가하고 API를 다듬었습니다.
New Toast Component
다음과 같은 기능을 갖춘 가볍고 비모달 피드백 요소:
- 슬라이드‑인 및 슬라이드‑아웃 애니메이션
- 설정 가능한 기간 후 자동 해제
- 수동 닫기 버튼
- 다양한 위치 (우측 상단, 좌측 하단 등)
- 사용자 정의 색상, 크기, 텍스트
Toast(
text="Build succeeded!",
bg_color="#4caf50",
duration=3
).show()
모달 동작이 없고 차단되지 않으며—웹 알림과 유사한 즉각적인 피드백을 제공합니다.
New Switch Component
설정, 환경설정, 기능 플래그 등에 적합한 토글 기반 컴포넌트.
Key features
- 명확한 ON / OFF 상태 처리
- 선택적 기본 상태 지정
- 자동 스태킹 레이아웃과 완전 호환
- 고유
id로 전역 접근 가능
Switch(
id="darkMode",
text="Enable Dark Mode",
default=True
)
앱 어디서든 스위치 상태를 가져올 수 있습니다:
state = Switch.get_state(id="darkMode") # 1 = ON, 0 = OFF
API Consistency
모든 컴포넌트에서 API가 보다 일관된 패턴을 따르게 되었습니다:
- 공통 속성:
text,color,text_color,bg_color - 동적 접근을 위한 선택적
id - 명시적인 위치 지정이 없을 경우
Div내부에 자동 레이아웃
이 일관성 덕분에 복잡한 UI를 구축할 때 예측 가능성이 높아집니다.
Testing & Future Ideas
이번 업데이트는 다음 상황에서 테스트되었습니다:
- 깊게 중첩된 레이아웃
- 자동·수동 포지셔닝 혼합
- 콜백에서 트리거되는 다수의 인터랙티브 컴포넌트(버튼, 스위치, 토스트)
예정된 개선 사항:
- 반응형 동작 (데스크톱 스타일 반응형, CSS 아님)
- 향상된 애니메이션
- 추가 컴포넌트
Installation & Documentation
- PyPI:
- Docs / Quickstart:
Conclusion
데스크톱 UI에 관심이 있지만 웹 같은 사용성을 선호한다면, 좋은 피드백이든 나쁜 피드백이든 환영합니다. 라이브러리는 아직 초기 단계이며 계속 발전하고 있지만, 이번 업데이트는 의미 있는 진전을 보여줍니다. 생각을 자유롭게 공유해 주세요!