본문 바로가기
Front-End/PyQt5

[ PyQt5 ] Qt Designer로 ui 파일 만들기, 연결하기 / 버튼과 함수 연결하기

by j-y 2020. 6. 22.
반응형

Qt Designer?

  • PyQt로 GUI  프로그래밍을 할 때 쉽게 레이아웃을 편집할 수 있도록 도와주는 편집기.
  • 아나콘다를 설치하면 PyQt5와 함께 자동으로 설치됨
  • Qt Designer 없이 파이썬 코드만으로도 GUI 프로그래밍이 가능하긴함

 

1. Qt Designer 실행


- Anaconda Prompt 열기

 

- designer 입력

 

2. ui 파일 생성


- Main Window 선택 후 [ 생성(R) ]

 

- 좌측 위젯 상자에서 [ Push Button ] 을 MainWindow로 드래그 앤 드롭

 

* 원하는 위젯을 좌측 위젯 상자에서 윈도우창에 드래그 앤 드롭으로 위젯을 추가할 수 있다.

 

- [ PushButton ] 선택 후 우측 속성 편집기 -> objectName 변경 -> [ testBtn ]

 

* objectName은 파이썬 코드에서 ui 파일의 위젯과 연결 시 식별을 위해 사용된다.

 

3. ui 파일 저장


- 파이썬 프로젝트를 만들 경로에 원하는 이름으로 저장

 

4. 파이썬 코드 작성


- 필요한 모듈 불러오기

import sys
from PyQt5 import uic
from PyQt5.QtWidgets import QApplication, QMainWindow

 

- ui 파일 불러오기

form_class = uic.loadUiType("./test.ui")[0]

 

- 윈도우 클래스 선언

class WindowClass(QMainWindow, form_class):
    def __init__(self):
        super().__init__()
        self.setupUi(self)

 

- 메인 선언

if __name__ == "__main__":
    app = QApplication(sys.argv)
    myWindow = WindowClass()
    myWindow.show()
    app.exec_()

 

- 전체 코드

import sys
from PyQt5 import uic
from PyQt5.QtWidgets import QApplication, QMainWindow

form_class = uic.loadUiType("./test.ui")[0]


class WindowClass(QMainWindow, form_class):
    def __init__(self):
        super().__init__()
        self.setupUi(self)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    myWindow = WindowClass()
    myWindow.show()
    app.exec_()

 

5. 버튼 클릭 함수 연결


- 버튼 클릭 시 실행할 함수 만들기(WindowClass 내에 생성)

def btnClick(self):
    print("버튼이 클릭되었습니다.")

 

- [ testBtn ] 과 연결

self.testBtn.clicked.connect(self.btnClick)

 

- WindowClass 전체 코드

class WindowClass(QMainWindow, form_class):
    def __init__(self):
        super().__init__()
        self.setupUi(self)

        self.testBtn.clicked.connect(self.btnClick)

    def btnClick(self):
        print("버튼이 클릭되었습니다.")

 

6. 실행 후 확인

 

 

반응형

댓글