Qt/PyQt5 강좌

PyQt5 그룹박스(QGroupBox) 예제

webnautes 2024. 8. 31. 00:25
반응형

PyQt5 그룹박스(QGroupBox)  예제입니다. 



2024. 8. 29  최초작성




실행 하면 그룹박스 내에 라벨과 두 개의 버튼이 보여집니다. 디폴트로 보이는 그룹박스와 달리 테두리 선이 그레이로 두꺼운 선이고 그룹박스의 제목도 위치가 조정되어 있습니다. 

 



버튼을 클릭하면 해당 문자열이 출력되도록 구현되어 있습니다. 

 

 



전체 코드입니다. 

 

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QGroupBox, QLabel, QPushButton, QVBoxLayout, QHBoxLayout

class ExampleApp(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        # 메인 레이아웃
        main_layout = QVBoxLayout()

        # 그룹박스 생성
        groupbox = QGroupBox("그룹박스")
        groupbox.setStyleSheet("""
            QGroupBox {
                border: 2px solid gray;  /* 그룹박스의 테두리 선을 2픽셀 굵기의 회색 실선으로 합니다.  */
                border-radius: 5px;  /* 테두리 모서리를 5픽셀 반경으로 둥글게 만들어 줍니다. */
                margin-top: 1ex;  /* 그룹박스 위쪽 여백 설정. 그룹박스 테두리선에 맞추어 제목이 오도록 합니다. */
            }
            QGroupBox::title {
                subcontrol-origin: margin;  /* 제목의 위치 기준을 margin으로 설정 */
                subcontrol-position: top left;  /* 제목을 위쪽 왼쪽에 배치합니다. */
                padding: 0 5px;  /* 제목 텍스트 좌우의 패딩을 5px로 설정합니다. */
                left: 10px;  /* 제목을 경계상자의 왼쪽 위 모서리에서 오른쪽으로 10픽셀 떨어진 곳에 위치하도록 합니다. */

            }
        """)

        # 그룹박스에 추가할 것을 우선 레이아웃에 포함시켜야 합니다.
        group_layout = QVBoxLayout()

        # 라벨 추가
        self.label = QLabel("여기에 텍스트가 표시됩니다.")
        group_layout.addWidget(self.label)

        # 버튼 레이아웃
        button_layout = QHBoxLayout()

        # 버튼 추가
        button_hello = QPushButton("안녕")
        button_bye = QPushButton("잘가")
       
        button_hello.clicked.connect(self.say_hello)
        button_bye.clicked.connect(self.say_bye)

        button_layout.addWidget(button_hello)
        button_layout.addWidget(button_bye)

        # 버튼 레이아웃을 그룹 레이아웃에 추가
        group_layout.addLayout(button_layout)

        # 그룹박스에 group_layout을 지정하면 group_layout에 추가되어있는 컴포넌트들이 그룹박스 내에 보입니다.
        groupbox.setLayout(group_layout)

        # 메인 레이아웃에 그룹박스 추가
        main_layout.addWidget(groupbox)

        # 윈도우 설정
        self.setLayout(main_layout)
        self.setGeometry(300, 300, 300, 150)
        self.setWindowTitle('GroupBox Example')
        self.show()

    def say_hello(self):
        self.label.setText("안녕")

    def say_bye(self):
        self.label.setText("잘가")

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = ExampleApp()
    sys.exit(app.exec_())



반응형