일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 엑스퍼트2주년
- QT TCP
- #신혼부부 #결혼준비 #신혼부부희망타운신혼부부특별공급
- C++ API
- QTcpServer
- meta table
- 찾다죽는줄
- #부동산전자거래 #부동산전자계약 #부동산계약 #부동산전자계약방법 #부동산전자계약하는법 #부동산계약방법 #부동산중개수수료 #부동산중개수수료아끼기 #부동산복비아끼기
- object
- 청량리역한양수자인192
- FILE TRANSFER
- lua for windows
- 등록임대주택
- lua install
- lua interpreter
- C API
- 월세
- 프리미어 영상저장
- 국토교통부
- 수도권주택공급
- Lua
- TCP/IP
- file write
- 중소규모택지
- 프리미어 영상변환
- 티몬삼겹살데이
- file read
- lua setup
- 엑스퍼트생일축하해
- file open
- Today
- Total
Value Creator의 IT(프로그래밍 / 전자제품)
#100 파이썬에서 QT 활용하기 (PyQT 기반 GUI) 본문
핵심요소
1. 화면에 출력되는 UI : 위젯 클래스의 객체로 생성
2. 이벤트 루프 : QApplication 객체에서 exec_ 메서드를 호출해 이벤트 루프 생성
3. 이벤트 처리 함수 또는 메서드 구현 : 예를 들어 버튼 클릭 이라면 위젯은 'clicked'라는 '시그널' 발생, 사용자는 '시그널' 발생시 호출되는 함수 또는 메서드를 구현해야 함. 함수 또는 메서드를 QT에서는 '슬롯' 이라고 부름. '슬롯'은 다른 프로그래밍 언어에서는 '콜백 함수'라고 표현함.
즉, '시그널'과 '슬롯'을 연결해주면 됨.
예시)
사용자 : 마우스 클릭
위젯 : 클릭 시그널 발생
이벤트 루프 : 클릭 시그널에 대한 이벤트 수행, 슬롯 호출
슬롯 : 사용자가 미리 구현해 놓은 함수 실행
사용자 -> 위젯 -> 이벤트 루프(조건부 반복) -> 슬롯
이벤트 루프는 사용자가 윈도우를 닫을 때까지 실행되면서 시그널 처리 및 슬롯 호출을 담당함.
주의사항 : 슬롯의 구현과 시그널-슬롯 연결이 이벤트 루프 생성 app.exec_ 메서드 호출보다 먼저 수행되어야 함.
자식 클래스인 MyWindow가 부모 클래스인 QMainWindow를 상속받으면 QMainWindow 클래스에 정의된 모든 메서드나 프로퍼티를 사용할 수 있습니다.
QT Designer 활용하기
코드를 일일이 짜서 UI를 구현하는 것은 매우 번거롭다.
UI 구성을 위한 전용 도구인 QT Designer를 사용하면 편리하다.
QT GUI 설계를 위지윅 방식으로 할 수 있다.
QT Designer 실행 경로
C:\Anaconda3\Library\bin\designer.exe
QT에는 Dialog와 Main Window, Wigdets 세 가지 종류의 GUI가 있다.
보통 Main Window를 많이 사용한다.
작성한 .ui 파일을
C:\Anaconda3\Lib\site-packages\PyQt5\uic라는 디렉터리로 복사합니다.
C:\Anaconda3\Lib\site-packages\PyQt5 디렉터리에서 uic 디렉터리를 선택한 후 Shift 키를 누른 상태에서 마우스 오른쪽 버튼을 클릭합니다. 메뉴가 나타나면 [여기서 명령 창 열기] 메뉴를 선택합니다.
python -m PyQt5.uic.pyuic -x mainwindowtest.ui -o main_window.py
C:\Anaconda3\Lib\site-packages\PyQt5\uic 폴더 안에 main_window.py 파일이 생긴다.
또는 아래 처럼 해주면 py로 변환하지 않고 .ui 파일을 그대로 가져다 사용할 수 있다.
'1. 프로그래밍 > 3) QT' 카테고리의 다른 글
QT Serial 통신 우분투에서 권한 문제 해결(permission denied) (0) | 2019.12.19 |
---|---|
#24 [QT] 시리얼 통신 (Serial Communication Programming) (0) | 2019.07.26 |
#23 Qt 코딩 스타일 (0) | 2019.07.23 |
#22 QT의 시그널과 슬롯(Signal, Slot), Connect 함수 사용법 (2) | 2019.06.26 |
#21 QT GUI Widget 정렬하기, 줄 맞추기 (0) | 2019.06.25 |