6. 설치부터
pip install PyQt5 - 모듈 설치
pip install pyqt5-tools - Qt 개발 응용툴 설치
배포까지
pip install pyinstaller
pyinstaller main.py
* 설치와 배포는 윈도우를 기준입니다.
* 리눅스와 맥은 경우에 따라서 빌드를 해야 할 수도 있습니다.
7. PyQt로 개발은 크게 두 가지
Qt Designer 를 이용,
위젯을 배치 후 로직 작성
* 큰 어려움 없이 빠른 속도로 UI설계 가능
* 기본 위젯만 사용했다면, C++ Qt로 빠르게 포팅가능
Qt Designer 를 이용하지 않고,
코드로 위젯을 직접 배치
* 완전히 코드를 장악하고 있다는 정신승리
* 익숙해지면 Qt Designer를 사용하는 것이 오히려 더 불편
8. Qt Designer
* 마우스를 이용하여 위젯배치
* 손쉬운 속성 값 설정
* 위젯과 위젯의 행동 설정 가능
* 최종 결과물로 XML로 위젯정보 기록
* 확장명이 ui 인 파일을 생성
* UI구성에 필요한 기본 Qt 위젯을 제공
9. Qt Designer
ui 파일을 이용하여 개발 #1
XML로 이루어진 ui 파일을 pyuic5를 이용, python 파일로 변환
*에디터에서 자동완성 기능 사용가능
*디자인 변경시마다 ui 파일 변환과정이 귀찮다.
pyuic5
10. Qt Designer
ui 파일을 이용하여 개발 #2
uic 모듈의 loadUi() 메서드를 사용
*ui 파일을 변환없이 바로 사용 가능
*변환 과정이 없으므로 작업속도가 향상
*에디터에서 자동완성 기능을 사용할 수 없다.
11. 하지만,
저 두 방법 모두 마음에 들지 않고
모든 것을 다 손으로 적어 넣기로 결심
*내 타자속도는 마우스 보다 빠르다. (그럴리 없다.)
*하드코딩으로 나온 소스가 깨끗. (사장님이 싫어합니다.)
*파이썬으로 변환된 ui 파일 내부를 보며 공부하거나 참고할 순 있다.
*실제로는 Qt Designer와 하드코딩을 함께 사용합니다.
*사용자가 파이썬으로 만든 커스텀 위젯은 Qt Designer에 등록할 수 없다.
12. 메모장을 만들어 가며 배워보자
윈도우 메모장(notepad)를 PyQt로 작성
* 위젯의 최상위 QWidget 에 대한 이해
*창 위젯 생성 및 설정
*기본 위젯 사용
*시그널과 슬롯의 이해와 사용
*사용자 커스텀 위젯 생성 및 이해
*사용자 정의 시그널과 슬롯
*국제화 i18n(Internationalization)
*배포 방법
13. QWidget은 가장 기본적인 위젯
모든 위젯은 QWidget을 상속
* 윈도우 창을 위한 프레임과 타이틀바 제공
* 입력장치 이벤트 처리
* 출력 처리
* 위치와 크기등의 속성 값
QWidget
난 위젯이야
14. QPushButton
Widget은 상속의 상속을 받아 완성
간단하게 말해보면
* QWdiget - 위치, 크기
* QAbstractButton - 클릭, 토글, 버튼속성, 텍스트
* QPushButton - 버튼 모양, 버튼메뉴
QAbstractButton
QWidget
클릭가능해 난 위젯이야
누르는 맛이 있
는 버튼 모양
15. 시그널과 슬롯
각 위젯이 가진 약속된 행위
* 모든 위젯은 시그널과 슬롯이 있다
* 시그널은 정의된 기능이 실행되면 결과 값을 보낸다
* 슬롯은 시그널이 보낸 값을 받아서 정의된 행위를 한다
* 시그널은 실행할 수 있는 함수가 아니다.
* 시그널과 슬롯을 연결시켜야 상호간의 통신 가능.
PushButton
clicked()
pressed()
released()
LED
turn_on()
toggled(bool)
turn_off()
trun(bool)
16. 사용자 커스텀 위젯 만들기
QWidget을 상속 받거나 다른 위젯을 확장하거나
* QWdiget 을 상속 받아서 완전히 새로운 위젯 작성
* 이미 만들어져 있는 위젯을 상속받고 기능을 추가하거나 변경하기
* 새로운 시그널 및 슬롯 작성
* 여러 위젯을 합쳐서 하나의 위젯으로 만들기
SuperPushButton
QPushButton
QAbstractButton
QWidget
QWidget
QTextEdit
QPushButton
20. * 언어 지원이 필요한 문자열에 tr() 함수를 사용
하여 문자열 입력
* pro 파일 제작
* tr()이 포함된 파이썬 파일명
* 생성할 언어파일명
* pylupdate5 -noobsolete notepad_i18n.pro
* 명시된 파일에서 tr()이 있는 부분을 검사
* 국가별 ts파일 생성
* lrelease.exe" translateko_KR.ts”
* qm파일로 변환
* lrelease.exe는 Qt5를 설치 또는
* pip install PyQt_tools 설치