Python

[Python] PyQt - QHBoxLayout()을 활용한 커스텀 위젯

디벨로펄 2024. 1. 29.
반응형

 

파이큐티

 

이 포스팅의 목적은 다음과 같은 위젯이 하나의 위젯으로 활용할 수 있도록 합니다.

 

CustomWidget 기능

1. CustomWidget은 QWidget을 HBox형태로 가집니다.

2. CustomWidget은 MainWidget 내에 추가가 가능해야한다.

 

MainWidget > CustomWidget > QWidget

전체 그림

 

위젯 상하관계
CustomWidget

CustomWidget 구현 1. QWidget 상속

QWidget을 상속받은 CustomWidget을 하나 만들어줍니다.

class CustomWidget(QWidget):
    def __init__(self, *args):
        super().__init__(*args)

 

CustomWidget 구현 2. QHB

oxlayout 

다음으로 CustomWidget은 QHBoxlayout()을 활용해줍니다. 

 

먼저, layout을 다음과 같이 생성 후, 현재 Widget을 담아주면 위에서 의도한 CustomWidget이 생성됩니다.

class CustomWidget(QWidget):
    def __init__(self, *args):
        super().__init__(*args)
        layout = QHBoxLayout()

        layout.addWidget(QLabel('QWidget1'))
        layout.addWidget(QLabel('QWidget2'))

        layout.addWidget(QLabel('QWidget3'))
        layout.addWidget(QLabel('QWidget4'))
        self.setLayout(layout)

 

CustomWidget 활용

MainWidget에서 CustomWidget을 다음과 같이 불러와 사용합니다.

MainWidget에서 위치시키고 싶은 위치로 move(moveX, moveY) 함수를 활용해 이동시켜줍니다.

block = CustomWidget(self) # Main위젯에서 이와같이 불러 활용합니다.
block.move(x - int(block.width() / 2), y - int(block.height() / 2))

 

그리하여, 구현한 CustomWidget은 다음과 같이 나타납니다.

결과

 

끝입니다. 

 

반응형

댓글