[PYTHON] 편리한 알고리즘 트레이딩, PyQt를 활용한 GUI 프로그래밍 - 2. Qt Designer 기본

2023. 10. 10. 15:03DATA PROGRAMMING/PYTHON

실행자는 실제 프로그램에 들어갈 알고리즘이나, 특정한 버튼을 눌렀을 때 특정한 기능을 하는 함수나 메소드 등을 정의할 필요가 있다. 하지만 그러한 인터페이스를 하나하나 일일이 조정하거나 버튼, 위젯 등을 전부 생성하는 것은 비효율적인 일이다. 이런 일들을 쉽게 처리하도록 도와주는 것 Qt Designer이다.

 

 

Qt Desingner

 

C:\Anaconda3\Library\bin 디렉터리에 designer.exe 파일을 통해 실행할 수 있다.

 

처음 실행 후 윈도우를 생성

 

 

왼쪽의 위젯에서 끌어와 편리하게 인터페이스를 구성할 수 있고, 오른쪽의 객 탐색기, 속성 편집기 등을 통해 위젯을 수정할 수 있다. Ctrl + R을 누르면 지금까지 작업한 내용을 미리보기 할 수 있다.

 

 

이 파일을 저장하면 xml 파일 형태로 저장된다. 이를 파이썬으로 코딩할 수 있다. pyuic.py라는 프로그램을 통해 xml 파일을 파이썬 코드 형태로 수정해 주면 된다.

 

ui 파일을 PyQt5 uic 폴더 복사한 뒤 uic 폴더에서 cmd를 실행하고 해당 문구를 입력한다.

그러면 ui파일을 통해 py파일을 만들 수 있다.

 

 

다음은 ui 파일을 파이썬에서 로드하는 방법에 대한 내용이다.

import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic

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

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

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

파이썬에서 MyWindow 클래스를 정의할 때, QMainWindow를 상속받아야 그 기능들을 사용할 수 있었다. 여기에 form_class 클래스 즉, 저장해 놓은 ui 파일까지 상속받으면 파이썬 내에서도 만들어 놓은 인터페이스를 실행할 수 있다.

 

지금까지 Qt Designer를 통한 대략적인 인터페이스 설정에 대해서 알아보았고, 각 버튼 등에 기능(함수나 메소드)를 입힐 수만 있으면 프로그램이 완성된다.

 

 

import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic

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

class MyWindow(QMainWindow, form_class):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.pushButton.clicked.connect(self.btn_clicked)

    def btn_clicked(self):
        QMessageBox.about(self, "message", "clicked")

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

이전 글에서 정의한 메소드인 btn_clicked를 그대로 정의하고,  form_class만 상속받아 주면 된다.

이제 프로그램에 사용되는 함수나 메소드는 파이썬 코딩을 통해 설정하고, ui 등은 Qt Designer를 사용하여 편리하게 설정할 수 있다.