2장에서 QApplication에 대해서 이야기 했었다.

QApplication은 이벤트 루프이며 사용자와 상호작용을 하는 루프 클래스라고...

 

이번장에서는 QMainWindow에 대해서 학습하려고 한다.

 

QMainWindow란?

복잡한 UI를 구성할 때, 즉 레이아웃 내에 다양한 기능의 위젯을 추가할 수 있도록 표준 위젯들을 제공하는 도구모음!

 

 

구성은 아래와 같이 진행한다.

 

1. MainWindow 클래스를 생성한다. 

2. __init__시에 super().__init__() 을 통해 QT_QMainWindow를 서브클래싱 할 수 있도록 한다.

3. pushbutton의 이름을 설정하고

4. 가운데에 위젯을 넣는다. 

 

from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QPushButton
import sys


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("My App")
        button = QPushButton("Press Me")
        self.setCentralWidget(button)

def main():

    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    app.exec()

if __name__ == "__main__":
    main()

 

 

(추가) super().__init__()

 

추가로 super().__init__()에 대해 정리 하려고 합니다.

 

super().__init__()를 사용하게 되면 상속받은 클래스를 모두 사용할 수 있습니다. 

 

해당 내용은 파이썬에서 사용되는 구문으로 아래 코드를 예를 들어 설명하겠습니다.

 

해당 클래스들은 각각을 상속받고 있습니다.

A > B >  C 

즉, C는 B,A클래스를 모두 갖고 있습니다. 따라서 밑에 결과를 보듯이 A,B클래스의 함수를 모두 사용할수 있게 되는것이죠.

 

class A:
    def __init__(self):
        self.a = 10

    def get_a(self):
        return self.a

class B(A):
    def __init__(self):
        super().__init__()
        self.b = 20

    def get_b(self):
        return self.b

class C(B):
    def __init__(self):
        super().__init__()
        self.c = 30

    def get_c(self):
        return self.c

 

 

 

 

 

 

 

참고

-  도서  "파이썬과 Qt6로 GUI 애플리케이션 만들기"

- https://supermemi.tistory.com/entry/Python-3-super%ED%81%B4%EB%9E%98%EC%8A%A4-selfinit-%EC%97%90-%EB%8C%80%ED%95%B4-%EC%A0%9C%EB%8C%80%EB%A1%9C-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90

+ Recent posts