본문 바로가기
프로그래밍/python

PyQt5 QGroupBox 사용법

by 마루의 일상 2024. 5. 27.
728x90
반응형

QGroupBox는 그룹화된 위젯들을 하나의 박스로 묶어주는 컨테이너 위젯으로, 주로 관련된 옵션들을 그룹화하여 사용자에게 제공할 때 유용하게 사용됩니다. 예제를 통해 사용법을 알아보겠습니다.

1. 기본 예제: QGroupBox 만들기

이제 기본적인 QGroupBox 예제를 만들어보겠습니다. 이 예제에서는 QGroupBox를 사용하여 여러 개의 라디오 버튼을 그룹화합니다.

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QGroupBox, QRadioButton, QVBoxLayout, QWidget

class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle('QGroupBox 예제')
        self.setGeometry(100, 100, 300, 200)

        self.initUI()

    def initUI(self):
        # QGroupBox 생성
        groupBox = QGroupBox('옵션 선택', self)
        groupBox.setGeometry(50, 50, 200, 100)

        # 라디오 버튼 생성
        radio1 = QRadioButton('옵션 1', self)
        radio2 = QRadioButton('옵션 2', self)
        radio3 = QRadioButton('옵션 3', self)

        # 레이아웃 생성 및 라디오 버튼 추가
        vbox = QVBoxLayout()
        vbox.addWidget(radio1)
        vbox.addWidget(radio2)
        vbox.addWidget(radio3)

        # QGroupBox에 레이아웃 설정
        groupBox.setLayout(vbox)

        # 메인 위젯 설정
        mainWidget = QWidget()
        mainLayout = QVBoxLayout()
        mainLayout.addWidget(groupBox)
        mainWidget.setLayout(mainLayout)
        
        self.setCentralWidget(mainWidget)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MyWindow()
    window.show()
    sys.exit(app.exec_())

2. QGroupBox의 스타일 및 기능 확장

QGroupBox는 다양한 스타일과 기능을 제공하여 사용자 인터페이스를 더 풍부하게 만들 수 있습니다. 다음은 QGroupBox의 스타일을 변경하고 기능을 확장하는 몇 가지 방법입니다.

QGroupBox 스타일 설정

QGroupBox의 스타일을 변경하려면 스타일 시트를 사용할 수 있습니다. 다음은 QGroupBox의 배경색과 테두리 스타일을 변경하는 예제입니다.

groupBox.setStyleSheet("""
    QGroupBox {
        background-color: #f0f0f0;
        border: 2px solid #000000;
        border-radius: 5px;
        margin-top: 10px;
    }
    QGroupBox::title {
        subcontrol-origin: margin;
        subcontrol-position: top center;
        padding: 0 3px;
        background-color: #ffffff;
    }
""")

QGroupBox 내의 위젯 상태 변경

QGroupBox 내의 위젯들의 상태를 변경할 수 있습니다. 예를 들어, 특정 라디오 버튼이 선택되었을 때 다른 위젯들을 비활성화할 수 있습니다.

from PyQt5.QtCore import Qt

def on_radio_button_toggled():
    if radio1.isChecked():
        radio2.setDisabled(True)
        radio3.setDisabled(True)
    else:
        radio2.setDisabled(False)
        radio3.setDisabled(False)

radio1.toggled.connect(on_radio_button_toggled)

 

QGroupBox는 관련된 위젯들을 그룹화하여 사용자에게 더 나은 인터페이스를 제공하는 데 유용합니다. 다양한 스타일과 기능을 통해 QGroupBox를 더욱 활용해 보세요.

728x90
반응형