티스토리 뷰

PyQt

Spec

iMac (Retina 5K, 27-inch, 2017)
macOS Sierra (version 10.12.6)

install (개인용으로 작성함)

$ pyenv virtualenv 3.6.4 pyqt
$ cd /you/want/path
$ pyenv activate pyqt
$ pip3 install PyQt5

install Qt (site)

UI 작업을 할 수 있는 Qt Creator가 들어있는 작업도구.
Qf Widget Application을 생성하면, 기본적으로 .ui이 존재한다.
이 파일을 열심히 작업해서, 저장하고 위치를 기억한다.
그리고 아래 명령을 실행하면 .ui파일이 .py로 변경된다.

$ pyenv activate pyqt # PyQt5가 설치 되어있어야 함.
$ pyuic5 [.ui위치].ui [저장위치].py

PyQt 기본적인 구조

Form
    __init__
        init_widget()
    
    init_widget()
        # 레이아웃 설정 및 시그널 슬롯 연결
        # 만든 슬롯을 widget에 추가

Qt Creator와 연계 작업

여기서 QtCreator는 설치했다고 가정한다.

  1. 설치 위치로 이동해서 Qt Creator를 실행한다.
  2. Cmd + n를 눌러서 새 프로젝트를 연다.
  3. Qt Designer Form을 선택한다.
    Qt_01.png
  4. Widget을 선택한다.
    Qt_02.png
  5. Path를 설정해주고 프로젝트를 생성한다.
    Qt_03.png
  6. Project가 열리면 Form을 열고 .ui파일을 더블클릭한다.
    Qt_04.png
  7. 모든 작업을 마친 후 Cmd + s를 눌러 저장한다.
    Qt_05.png
  8. 5에서 저장한 Path로 이동하여 복사한다.
    Qt_06.png
  9. Python Project폴더에 붙여넣는다.
    Qt_07.png
  10. Code에서 해당 .ui를 불러온다.
    self.ui = uic.loadUi("form.ui", self)

content

Repeat work (참고사이트)

선언 및 정의

from PyQt5.QtCore import Qt
from PyQt5.QtCore import QThread
from PyQt5.QtCore import pyqtSignal

class TicGenerator(QThread):
    """
    5초마다 틱 신호를 전달
    """
    # 사용자 정의 시그널 선언
    # 외부에서 사용할때 tic대신 Tic을 이용하여 호출할 수 있다.
    # Qt의 시그널 및 슬롯 이름은 Camel을 사용하기 때문에 파이썬의 PEP8을 지키면서 작성한다면 name을 반드시 사용
    tic = pyqtSignal(name="Tic")

    def __init__(self):
        QThread.__init__(self)

    def __del__(self):
        self.wait()

    def run(self):
        while True:
            t = int(time.time())
            if not t % 5 == 0:
                self.usleep(1)
                continue
            self.Tic.emit()
            self.msleep(1000)

사용

self.tic_gen = TicGenerator()
self.tic_gen.start()


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
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