GN⁺: 구이(Gooey): 거의 모든 파이썬 커맨드 라인 프로그램을 완전한 GUI 애플리케이션으로 변환
(github.com/chriskiehl)Gooey를 사용하여 Python 콘솔 프로그램을 GUI 애플리케이션으로 변환하기
- Gooey는 Python 3 콘솔 프로그램을 사용자 친화적인 GUI 애플리케이션으로 변환하는 도구임.
- 커맨드 프롬프트 대신 GUI를 제공하여 프로그램을 더 쉽고 아름답게 만들 수 있음.
- 비프로그래머 대상의 스크립트나 데이터 이동 등의 작업을 위한 유틸리티를 만들 때 유용함.
Gooey의 작동 방식
- Gooey는
argparse
선언이 있는 메소드에 데코레이터를 추가하여 코드에 연결됨. - 실행 시 파이썬 스크립트를 파싱하여
ArgumentParser
참조를 추출하고 GUI를 조립함. -
GooeyParser
를 사용하여 GUI에서 표시되는 위젯을 더 세밀하게 제어할 수 있음.
Gooey의 국제화
- Gooey는 다양한 언어로 쉽게 번역될 수 있으며, 현재 18개 이상의 번역이 포함되어 있음.
- 새로운 언어 지원은
gooey/languages/
디렉토리에 키/값 쌍을 추가하는 것만큼 간단함.
Gooey의 전역 설정
- Gooey의 전반적인 모양과 느낌은 데코레이터에 인수를 전달하여 사용자 정의할 수 있음.
- 인코딩, 언어, 시작 크기, 폰트 설정 등 다양한 구성 요소를 사용자 정의할 수 있음.
Gooey의 레이아웃 사용자 정의
- Gooey는 몇 가지 간단한 사용자 정의를 통해 유연한 레이아웃을 제공함.
- 사이드바 표시 여부, 탭 그룹 사용 등을 통해 다양한 레이아웃 옵션을 제공함.
Gooey의 실행 모드
- Gooey는 내용 유형과 사용자의 경험 수준에 맞게 레이아웃을 조정할 수 있는 여러 가지 표시 모드를 제공함.
- 고급, 기본, 설정 없음 모드를 통해 다양한 사용자 요구에 맞춤형 GUI를 제공할 수 있음.
Gooey의 메뉴
- 사용자 정의 메뉴 그룹과 항목을 Gooey의 메뉴 바에 추가할 수 있음.
- 다양한 유형의 메뉴 옵션을 지원하여 프로그램 정보, 메시지 대화 상자, 링크 등을 제공함.
Gooey의 동적 검증
- 사용자 입력을 프로그램에 전달하기 전에 Gooey는 선택적으로 사전 검증을 실행하여 모든 인수가 검증을 통과하는지 확인할 수 있음.
Gooey의 생명주기 이벤트 및 UI 제어
- Gooey는 프로그램의 성공적인 실행이나 실패에 대한 추가 후속 조치를 취하고 UI의 현재 상태를 제어할 수 있는 생명주기 후크를 제공함.
Gooey의 진행 상황 표시
- Gooey는 텍스트 진행 업데이트를 기반으로 진행 상황 표시줄의 상태를 업데이트할 수 있음.
- 정규 표현식과 사용자 정의 평가 표현식을 통해 진행 상황을 Gooey에 알릴 수 있음.
Gooey의 아이콘 사용자 정의
- Gooey는 기본 아이콘을 사용자 정의 이미지/아이콘으로 대체할 수 있는 기능을 제공함.
-
image_dir
인수를 통해 사용자 정의 이미지 디렉토리를 지정할 수 있음.
Gooey의 패키징
- Gooey를 실행 파일로 패키징하는 것은 매우 쉬우며, pyinstaller를 사용하여 애플리케이션을 준비된 실행 파일로 번들링할 수 있음.
GN⁺의 의견
이 글에서 가장 중요한 것은 Gooey가 파이썬 콘솔 프로그램을 GUI 애플리케이션으로 쉽게 변환할 수 있다는 점입니다. 이는 프로그래머가 아닌 사용자들에게 프로그램을 더 친숙하고 접근하기 쉽게 만들어 줄 수 있으며, 이로 인해 개발자들은 사용자 인터페이스에 대한 걱정 없이 로직에 집중할 수 있습니다. Gooey의 다양한 설정과 사용자 정의 옵션은 개발자들에게 매력적인 선택지를 제공하며, 이는 GUI 개발의 진입 장벽을 낮추는데 크게 기여할 수 있습니다.
Hacker News 의견
-
Gooey 프로젝트에 대한 개발자의 설명
- Gooey는 오래된 프로젝트로, 처음 시작할 때는
argparse
가 탄탄한 선택이었음. - 현재 Gooey는 JSON을 사용하며
argparse
와 분리되어 있음. -
argparse
는 여전히 주요 인터페이스로 남아 있으나, 다른 대안이 마땅치 않음. - Gooey를 이용해 파이썬뿐만 아니라 임의의 실행 파일도 호출할 수 있음.
- 마지막 커밋이 2년 전이라는 점에 대해, 나이가 들고 우선순위가 바뀌면서 무료로 소프트웨어 작업을 정당화하기 어려워졌다는 아쉬움 표현.
- Gooey는 오래된 프로젝트로, 처음 시작할 때는
-
Gooey와
argparse
의 관계에 대한 논의-
argparse
는 간단한 작업에 적합하지만,Click
기반의 CLI가 많고,Click
을 기반으로 하는 인기 있는 CLI 라이브러리도 존재함. -
Click
과 호환되는지 확인되지 않았으며,argparse
에만 국한된다면 "거의 모든"이라는 표현은 정확하지 않을 수 있음. - 프로젝트에 대한 신뢰를 주지 못하는 열린 이슈들이 있음에도 불구하고, 프로젝트 자체는 흥미로운 아이디어를 담고 있음.
-
-
Gooey 관련 이전 토론 링크 제공
- 2021년 6월과 2014년 8월에 해커뉴스에서 Gooey에 대한 토론이 있었음을 알려주는 링크.
-
운영 체제와 셸이 프로그램을 더 잘 실행할 수 있기를 바라는 의견
- 프로그램이 JSON/프로토콜 형식으로 통신하여 셸 명령 구조나 GUI를 개선할 수 있기를 희망함.
- 현재는 셸 완성 파일을 내보내고, 다양한 플래그 스타일과 파싱 라이브러리가 존재하며, GUI는 없는 상황임.
-
Textual 프레임워크 소개
- Python으로 간단한 API를 사용해 터미널과 웹 브라우저에서 실행되는 사용자 인터페이스를 구축할 수 있는
Textual
프레임워크 소개.
- Python으로 간단한 API를 사용해 터미널과 웹 브라우저에서 실행되는 사용자 인터페이스를 구축할 수 있는
-
ffmpeg을 위한 GUI 버전에 대한 문의
- ffmpeg의 파라미터를 GUI로 제공하는 도구에 대한 관심 표현.
-
사용자 입력을 기대하는 CLI 도구와 Gooey의 통합 방법에 대한 질문
- 게임 엔진 디버깅을 위한 bisect 스크립트에 GUI를 추가하여 사용자가 문제를 진단하는 데 도움을 줄 수 있는 방법에 대한 관심.
-
GUI에서 CLI로 변환하는 도구에 대한 관심
- 반대로 GUI를 CLI로 변환하는 도구에 대한 희망 표현.
-
Naked Objects 컨셉에 대한 언급
- Java 클래스와 어노테이션을 정의하면 GUI나 웹 프론트엔드가 자동으로 생성되는 아이디어인 Naked Objects에 대한 설명.
-
Gooey가 웹 앱을 생성할 수 있을지에 대한 호기심
- Gooey가 React나 JS가 없는 웹 앱을 생성할 수 있는지에 대한 궁금증.
- CLI 프로그램 앞에 웹 프론트엔드를 두는 저코드 도구인 Python Script Server에 대한 비교 언급.