(PyQt6)0. Python GUI + 해석 프로그램 만들기 개요
VS + C#이나 electron 같이 pyQt6 보다 좋은 GUI툴은 많지만 python 밖에 할 줄 모른다면 pyQt6는 간단한 GUI 만들 때 나쁘지 않다.
- 우선 크로스플랫폼이 된다.
- 대신, window에서 빌드해서 mac에서 보면 폰트 등의 UI가 다르게 보이기 때문에 cross-platform 을 지원하면서 UI 가 중요하다면,
sys.platform == "win32"
와 같은 플랫폼 체크를 해서 플랫폼별 스타일을 적용하면 된다. - raspberry pi 같은 임베디드(?) 디바이스의 경우 pyQt5를 더 많이 사용하는 경향이 있다.
- 대신, window에서 빌드해서 mac에서 보면 폰트 등의 UI가 다르게 보이기 때문에 cross-platform 을 지원하면서 UI 가 중요하다면,
html/js/css
몰라도pyside2-uic
혹은pyside6-uic
으로 drag&drop으로 UI를 꾸밀 수 있다.QWidgets
으로 위젯을 만드는 게 귀찮다면,xlwings
같은 라이브러리로 엑셀파일 값을 읽어오는 방식으로 구현해도 좋다.- 코딩에 익숙하지 않은 사람에게는 다른 GUI 보다 그나마 접근하기 편하다.
- Visual Studio의 경우, 회사에서는 유료이기 때문에 비개발직군이 사용하기 쉽지는 않다.
- Js + npm로 시각화하는 방식도 있다. 하지만 웹 프로그래밍이 익숙하지 않으면 환경세팅이 번거로운 반면에 파이썬은 일부 라이브러리 설치만 해두면 다른 기능이 필요없다.
- 그리고 데이터 분석쪽은 Python이 가장 활성화되어 있으며
- 코드에 미숙할 경우 Jupyter notebook으로 구간별 테스트할 수 있는 python이 상대적으로 편하다.
이번 pyQt6에 관한 글은 개인 프로젝트를 만들면서 겪었던 시행착오들 위주로 적을 예정이다.
pyQt6는 pyQt5 제공하는 기능은 비슷하나 구현방법에서 차이가 있을 수 있다.
setsizePolicy()
,QSizePolicy
코드가 그 예시다.
1 2 3 4 5 6 # pyqt5 QtWidget().setSizePolicy( QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.preferred) # pyqt6 QtWidget().setSizePolicy( QtCore.Qt.QSizePolicy.Policy.Expanding, QtCore.Qt.QSizePolicy.Policy.preferred)위와 같이 PyQt6에서는 옵션, Flag 같은 부분에서 좀 더 세분화가 되어 있어 pyQt5 문법을 그대로 사용하기는 어렵다..
다음 내용들 위주로 작성해볼 예정이다.
attr
메소드와 python class 특징(overload가 안 된다는 특징 등)sqlite3
와pyqt
- pyside6-uic와 동적 UI 생성
- excel 해찾기 기능을 scipy로 구현
- UI 꾸미기(
.setStyleSheet()
로 안 되는 그림자, 애니메이션 제외)- QThread 활용하기
- xlwings 라이브러리로
.csv
파일 몽땅 차트로 옮겨버리기.- xlwings로 값을 받고 pyqtgraph로 그래프 그리기
- pyqtgraph 로 시각화해보기(heatmap, sigMouseMoved 등등 활용)
- 라이브러리 커스텀마이징하기
여기서는 Menu
바 등을 안 다룹니다.
Index
- Hello PyQt6!
- PyQt6 설치 및 실행해보기
- pyside2/6-uic.exe 대해서 알아보기
- PyQt6 위젯 종류와 예제들 내가 사용해봤던 것들 위주로
- QWidgets
- QDialog
- QLabel
- QLineEdit
- QPushButton
- QProgressbar
- QScorllArea
- PyQt6 꾸며보기
- setStyleSheet() 선에서 처리할 수 있는 것들
- hover, color, z-index등
- 부모태그 스타일은 자식 스타일에 자동으로 반영
- 처리할 수 없는 것들
- shadow
- animation
setSizePolicy
에 관해서…- QSpacer를 쓰지마세요.
- MVVM? 지키기
- setStyleSheet() 선에서 처리할 수 있는 것들
- PyQt6와 UI 동적으로 만들기
- PyQt6와 QThread 활용하기
- + scipy 페이지 따로 만들기
- 활용 사례 : Progressbar + 계산툴
- pyqtgraph vs matplotlib
- xlwings에 대해서 배우기
- vbs 안 써도 됩니다.
- 위젯 디자인 꾸미기 귀찮으면 이걸로 데이터 전처리 다 해도 됩니다.
- 예제 프로젝트
- numpy/pandas + pyqtgraph + xlwings + scipy + sklearn 데이터 시각화툴
This post is licensed under CC BY 4.0 by the author.