[PYTHON] PyQt를 활용하여 기본적인 프로그램 인터페이스 만들기

2023. 10. 6. 15:39DATA PROGRAMMING/PYTHON

알고리즘 트레이딩은 굳이 GUI 프로그램을 만들지 않아도 실행할 수 있지만, GUI 프로그램을 만들어 두면 훨씬 편한 트레이딩이 가능하다.

 

* 이 글은 '파이썬으로 배우는 알고리즘 트레이딩' 책을 공부하며 작성한 글입니다. *

 

먼저 여러 위젯을 포함한 위 형태의 인터페이스를 만들어 보자.

 

import sys
from PyQt5.QtWidgets import *

class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("PyStock")
        self.setGeometry(300, 300, 300, 400)

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

QMainWindow 클래스를 활용해 윈도우를 만든다. 위젯끼리는 서로 포함할 수 있는데 어디에도 포함되지 않는 최상위 위젯이 윈도우이다. exec_메서드를 통해 이벤트 루프를 생성할 수 있다.

 

해당 코드를 실행하면 기본적인 인터페이스가 생산된다.

 

 

이번엔 아무것도 없는 인터페이스에 이벤트를 만들어 보려고 한다.

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("PyStock")
        self.setGeometry(300, 300, 300, 400)

        btn1 = QPushButton("Click me", self)
        btn1.move(20, 20)
        btn1.clicked.connect(self.btn1_clicked)

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

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

MyWindow 클래스에 새로운 인스턴 byn1을 만들어주고, move를 통해 버튼의 위치를 설정한다. btn1_cliked라는 메서드를 만들어 사용자가 버튼을 누르면 message가 나오도록 한다.