지난 포스팅
2022.11.21 - [기타/PyQt5 한꼬집씩만 따라해보기] - 1. PyQt5 GUI의 기본 틀부터 시작합시다.
1. PyQt5 GUI의 기본 틀부터 시작합시다.
지난 포스팅 2022.11.21 - [기타/PyQt5 한꼬집씩만 따라해보기] - 들어가며 들어가며 PyQt5에 대해 다루는 포스팅이나 강의, 또는 서적이가 국내외에 참 많습니다. 그럼에도 이렇게 저만의 PyQt5 튜토리
martinii.fun
이번 포스팅에서는 : QMainWindow와 비슷한 QWidget의 정체
이번 포스팅에서는 QMainWindow와 박빙으로 중요한 QWidget에 대해 가볍게 다뤄보겠습니다.
우선 아래 코드를 보면 어떤 느낌이 드시나요?
from PyQt5.QtWidgets import QApplication, QWidget
app = QApplication([])
win = QWidget()
win.show()
app.exec()
'어? 이전 포스팅에서 보여준 코드랑 넘 비슷한데?'
맞아요. 실행결과도 거의 같아요.
위 코드를 실행해보면
차이점이라면 기본 사이즈가 조금 크다 정도?
QMainWindow와 QWidget은 사실 많이 닮아 있기도 해요.
그도 그럴 것이 QWidget은 바로, QMainWindow의 엄마거든요!
이전 포스팅 마지막에서 QMainWindow가 정의된 코드를 한 번 쭉 훑어봤는데, 아래 코드 첫 번째 라인만 읽어보면
class QMainWindow(QWidget):
""" QMainWindow(parent: QWidget = None, flags: Union[Qt.WindowFlags, Qt.WindowType] = Qt.WindowFlags()) """
def actionEvent(self, *args, **kwargs): # real signature unknown
pass
class QMainWindow(QWidget):~ 이라는 코드가 보이시죠?
이게 QMainWindow가 QWidget의 자식이라는 뜻이에요.
좀 더 전문적인 공식용어를 써보자면
QMainWindow는 QWidget을 상속받아 생성된 클래스라는 의미입니다.
이 때 QWidget을 QMainWindow의 부모클래스 또는 수퍼클래스라고 부릅니다.
같은 맥락에서 QMainWindow는 QWidget의 자식클래스 또는 서브클래스라고 부릅니다.
이렇게 클래스가 정의되어 있으면 부모클래스에서 정의된 메서드를 자식클래스에서도 사용할 수 있습니다.
참고로 QWidget의 메서드 개수는 무려 270여개입니다.
이중 QMainWindow가 같은 이름의 메서드를 재정의(=오버라이딩)한 갯수가 약 50여개니까
QMainWindow에서 사용가능한 메서드 갯수는 대략 100 + 270 - 50 = 320개 정도가 되겠네요.
그런데... 어쩌다 이런 이야기를 하게 된 거지;;
하여튼 QWidget과 QMainWindow는 부모자식 관계라서 뭔가 비슷할 것 같지만,
두 위젯의 차이는 각각의 이름만큼이나 확실합니다.
QMainWindow는 실제로 최상위 메인윈도우로만 활용할 목적으로 개조된 클래스이고,
QWidget은 "레이아웃"을 포함한 어떤 위젯도 담을 수 있는, 포용력 넘치는 스케치북(?) 같은 클래스입니다.
나중에 자세히 다루겠지만
한 가지 큰 차이를 들어보면
레이아웃 위젯은 QMainWindow에 직접 담을 수 없습니다.
QWidget.setLayout(레이아웃)으로 레이아웃을 QWidget에 담은 다음,
그 QWidget을 QMainWindow에 넣어야 합니다.
마치며
(원래 안 그러려고 했는데) 이번 포스팅에서 클래스에 대한 용어를 너무 많이 다뤘습니다.
아마 다시는 이렇게 객체지향 용어를 언급하는 일이 없을 것입니다.
너무 걱정하지 말아주시고, 어서 다음 포스팅으로 넘어갑시다!
다음 포스팅
2022.11.21 - [기타/PyQt5 한꼬집씩만 따라해보기] - 3. 어떤 위젯도 최상위 윈도우가 될 수 있다?
3. 어떤 위젯도 최상위 윈도우가 될 수 있다?
지난 포스팅 2022.11.21 - [기타/PyQt5 한꼬집씩만 따라해보기] - 2. QMainWindow의 엄마, QWidget 2. QMainWindow의 엄마, QWidget 지난 포스팅 2022.11.21 - [기타/PyQt5 한꼬집씩만 따라해보기] - 1. PyQt5 GUI의 기본 틀부
martinii.fun
'GUI 튜토리얼 > PyQt5 한꼬집씩만 따라해보기' 카테고리의 다른 글
3. 어떤 위젯도 최상위 윈도우가 될 수 있다? (0) | 2022.11.21 |
---|---|
1. PyQt5 GUI의 기본 틀부터 시작합시다. (0) | 2022.11.21 |
들어가며 (0) | 2022.11.21 |
댓글