Stock_PyQt 기초 - kwonyoonsu/study Wiki

PyQt를 이용해 'Hello PyQt'라고 적힌 윈도우 창 출력

import sys
from PyQt5.QtWidgets import *

app = QApplication(sys.argv) # QApplication에 대한 인스턴스를 생성하고 이를 app이라는 변수로 바인딩
label = QLabel("Hello PyQt") #QLable 클래스의 인스턴스를 생성하고 해당 인스턴스의 show 메소드를 호출함으로써 화면에 Qlabel 위젯이 출력
label = show()
app.exec_() #app을 통해 exec_ 메서드를 호출하면 프로그램은 이벤트 루프(event loop)에 진입

event loop란 무한 반복하면서 이벤트를 처리하는 상태

QPushButton 위젯 출력

import sys
from PyQt5.QtWidgets import *

app = QApplication(sys.argv)
label = QPushButton("Quit")
label.show()
app.exec_()

위젯과 윈도우

PyQt에서는 윈도우를 생성하기 위한 클래스로 QMainWindow나 QDialog 클래스가 일반적으로 사용됨

import sys
from PyQt5.QtWidgets import *

class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('Pystock') # setWindowTitle : 윈도우의 타이틀 창의 텍스트를 바꾸는 메서드
        self.setGeometry(300, 300, 300, 400) # setGeometry : 창의 위치 및 크기를 조절하는 메서드

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

이벤트 처리

  1. 윈도우에 'Click me'라는 버튼이 하나 있고, 2. 사용자가 해당 버튼을 마우스로 클릭하면 화면에 'clicked'라는 메시지 박스가 출력
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_()