그동안 Python GUI 툴로 PyQt5를 사용하고 있었는데, 디자인에 대한 갈증을 계속 느꼈었습니다.
다른 프레임워크나 라이브러리들도 투박하기는 매 한가지고, QtDesigner는 번거롭고 불편해서 차라리 그냥 코딩해서 디자인 해왔었어요.
dearpygui는 알고는 있었는데 크게 흥미가 가지 않아 사용하지 않았다가 얼마전 주말에 심심해서 잠깐 갖고 놀아보니 할만 하더라고요.
자료가 워낙 부족해서 삽질을 좀 했네요.
그러고나니 불가능 한 것과 가능한 것, 꼼수로 할 수 있는 것들을 좀 알겠더라고요.
그래서, 퇴근 후 한 두시간씩 틈틈히 삽질해서 간단하게 로또번호 추출기를 한 번 만들어 봤어요.
하는 김에 요즘 파이썬 진영에도 점점 확산되고 있는 type hint도 사용해봤고요.
아직 numpy나 keras같은 곳은 100% 적용되지는 않았지만 계속 적용해 가는 거 같고, 제대로 소개를 하고 있는 곳도 없어서 저도 할 수 있는 만큼만 적용을 해보았는데, 앞으로는 계속 적용 하는 습관을 들이려고요. 의심할 여지가 없이 좋은 기능이니까요.
JavaScript 진영에서 TypeScript가 대세인 것과 같은 이유죠.
다른 사람에게 이 곳은 어떤 형태의 값이 와야 하는 지를 명확히 알려주어 협업 시 확실한 이점이 있어요. 단점은 거의 없다고 봐야죠? ^^
디자인은 따로 한 게 거의 없어요.
요정도는 기본으로 뽑히더라고요.
색깔 있는 글씨나 공 부분은 canvas 역할을 하는 drawing을 놓고 그려준 거라 보시면 되요.
기본적으로 메인 창 안에 여러 개의 창을 만들어 붙이게 되어 있는데 요렇게 틀에 고정시키는 형태도 가능하고, child windows를 등록하는 형태도 가능해요.
대부분의 컴포넌트에 callback 함수를 등록할 수 있어서 요렇게 동적인 화면 구성도 가능해요.
여담으로 로또 번호 추출기에 LSTM이? 라고 생각하실 수 있으실텐데...
맞습니다. ㅋㅋㅋ 무작위 추출에 패턴이 어디있겠습니까 ㅋ
딥러닝 공부에 좋은 방법 중 하나가 입출력 shape을 직접 구성해서 해보는 것이라, 구구단 같은 기본 적인 시계열 데이터 외로 로또 번호 갖고도 해봤어요. ^^
번호 추출 후에는 다시 또 동적으로 화면이 변합니다.
추출된 번호와 만들어진 모델을 저장할 수 있는 버튼이 생겼죠?
한 두번 삽질해보면 사용법은 금방 익히실 거에요.
다만 커뮤니티도 제대로 없고 해서 자료 얻기가 굉장히 어렵고 뭔가 부족한 게 있다면 직접 구현하는 게 빠를 거에요.
그래도 한계 내에서 타협을 하면 요정도 퀄리티는 쉽게 만들 수 있어서 목적에 따라 활용하시면 좋을 것 같아요.
전 한동안은 요걸로 갈아타보려고요. ^^
몇가지 도움이 될 만한 자료들 공유 드리고 포스팅 마무리를 할게요.
Installation
$ pip install dearpygui
Sample Application
from dearpygui.core import *
from dearpygui.simple import *
def save_callback(sender, data):
print("Save Clicked")
with window("Example Window"):
add_text("Hello, world")
add_button("Save", callback=save_callback)
add_input_text("string", default_value="Quick brown fox")
add_slider_float("float", default_value=0.273, max_value=1)
start_dearpygui()
References
Official Site
API Reference
Examples
'Python' 카테고리의 다른 글
[Flask] Send Email on Flask using Flask-Mail (0) | 2021.02.28 |
---|---|
Draw Graph with MatPlotLib in Python (0) | 2021.02.25 |
[Python] argparse module (0) | 2021.02.03 |
[Python] Non-Keyword Arguments and Keyword Arguments (0) | 2021.01.22 |
[Python] 3 Ways of Formatted String (0) | 2021.01.22 |
댓글