GUI 라이브러리 소개 python

You are currently viewing GUI 라이브러리 소개 python

Python 에서 사용가능한 GUI 라이브러리 들을 몇가지 소개하겠다.

순수 GUI 라이브러리

  • PyQt, PySide

QT는 본래 C++ 환경에서 사용가능하게 만들어진 프레임워크이다.

Qt Designer를 통해 Visual studio 처럼 GUI환경에서 UI를 만들 수 있는게 특징이다.

리눅스, 윈도우 등 크로스 플랫폼으로 사용할 수 있고

python, ruby 등의 언어와 붙일 수 있다는게 장점이다.

이중 python bindg인PyQt는 python에서

가장 대중적인 GUI 라이브러리 중 하나이다.

따라서 예제가 풍부하고 사용도 간편한 장점이 있지만

GPL 에 의해 배포시 소스코드를 공개해야하며 싫다면

상업용 라이센스를 구매,구독해야한다.

이에 반하여 Qt의 원저작자가 LGPL로 만든것이 PySide이다.

자세한 내용은 꺼무위키를 참고하길 바란다.

그러므로 배포할 계획이 있다면 제약이 적은  PySide를 사용하는게 바람직하다.

참고로 두 라이브러리는 사용법이 거의 같지만 관리하는 주체가 다르다.

  • Tkinter

Tkinter 는 PyQT 와 함께 가장 많이 사용되는

GUI 라이브러리 중 하나이다.

Python 표준 라이브러리 에 해당하기때문에

Windows에서는 Python 설치시 같이 설치된다.

리눅스와, 윈도우, 맥 에서 사용가능하며   QT에 비해 저용량, 저사양이다.

실행파일의 크기도 작고 실행속도도 빠르기때문에

간단한 python 앱을 만들 때 자주 사용된다.

그러나 CLI 환경에서 디자인 해야하고 투박하며 기본 tkinter 의 편의성이 떨어진다.

예를 들어 표의 기능을 사용하고 싶다면 tksheet이라는

애드온 라이브러리를 설치해야 한다.

이외에도 wxPython, Kivy 등의 라이브러리가 많이 사용된다.

요즘 대세 = 웹앱

최근에는 위와 같은 전통적인 GUI 라이브러리보다

대시보드 형태의 웹앱 라이브러리가 각광 받고 있다.

  • Dash

Dash는 flask, Plotly, React 등을 활용해 만들어진 GUI 라이브러리다.

잘 꾸밀 경우 상당히 유려하고 다양한 기능을 제공하며

SPA(Single Page Application) 라이브러리  중 가장 인지도가 높다.

그런 만큼 예제도 풍부하고 문서화도 잘 되어있다.

다만 Tkinter 처럼 CLI환경에서 디자인을 해야하고

HTML에 대한 지식이 약간 필요한게 단점이다.

또, 구성 요소가 많아질 경우 예쁘게 배치하는게 까다롭거나 번거롭다.

그래도 속도 하나만큼은 후술할 라이브러리에 비해서 빠르기때문에

대량의 데이터를 plot 하거나 Rendering 할 때 유리하다.

정적인 이미지 파일로도 export 가능하지만 Jupyterlab, 웹앱 등으로

interactive graph 를 그릴 때 가장 빛을 발한다.

  • Streamlit

Dash와 비슷한 친구인데 사용법이 좀 더 간편하다.

사용자도 계속 늘어 Dashboard 계열 GUI 라이브러리 중

가장 관심받는 신성이다.

Dash보다 좀 더 간단한 그래프, 표를 나타나는데 적합하며

HTML에 대해 잘 몰라도 상관없다.

다만 설치 시 많은 의존성을 가지기 때문에 배포시 문제가 될 수 있다.

그리고 streamlit 앱 (streamlit.cli) 을 통해 실행되기때문에

이에 대한 설정, 디버깅이 번거롭다.

  • Bokeh

Dash 와 유사한 라이브러리로 Panel, Dask 등을 이용해

다양한 기능을 제공한다.

기본 레이아웃들이 Dash에 비해 유려하지만

특색있고 예쁘게 customize 하기는 어렵다.

반면 Dash는 html 과 React 를 이용해 만들어졌기때문에

전문가가 붙으면 빠르고 쉽게 꾸밀 수 있다.

Bokeh는 Jupyterlab에 좀더 특화되었고 Dash는 웹앱에

좀 더 장점을 가진다.

수만개 이상의 데이터를 plot할 때는 Dash보다 상당히 느리다.

현재의 github stars , 다운로드는 링크를 참고하라.

다음에는 Dash 를 이용한 GUI 구축에 대해 적겠다.


python 관련글

Leave a Reply