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 애플리케이션 만들기"
'프로그래밍 > PyQt' 카테고리의 다른 글
4. QPushButton란? _ PyQt와 친해지기 (with 시그널, 슬롯) (0) | 2024.05.15 |
---|---|
2. QApplication이란? _ PyQt와 친해지기 (0) | 2024.05.07 |
1. PyQt란? _ PyQt와 친해지기 (0) | 2024.05.06 |