본문으로 바로가기
반응형

QGroupBox 란 화면에서 컨트롤을 그룹 지을 때 사용하는 위젯을 말합니다. 특성이 다른 옵션이나 구분이 필요한 컨트롤을 한곳에 묶어서 보여주면 사용자가 화면을 조작하는데 도움이 됩니다. 주로 옵션버튼이나 체크박스를 그룹으로 묶을 때 많이 사용합니다.

 

1. 그룹 박스 만들어서 화면에 추가하기  

 

먼저 화면에 추가할 2개의 QGroupBox 객체를 생성합니다.

from PyQt5.QtWidgets import QGroupBox

gb_top = QGroupBox('Box group 1')
gb_bottom = QGroupBox('Box group 2')

 

다음은 2개의 QGroupBox 를 화면에 추가하기 위해서 3단계 절차를 거칩니다. 먼저 QGroupBox 를 배치할 QGridLayout 을 생성하고 addWidget() 함수를 이용해서 추가합니다. 다음은 위젯을 만들어서 QGridLayout 을 추가합니다. 마지막으로 QMainWindow setCentralWidget() 함수를 이용해서 QGridLayout 가 포함된 위젯을 세팅합니다.

from PyQt5.QtWidgets import QWidget, QGroupBox, QGridLayout

# 1. Layout 에 QGroupBox 를 추가한다.
boxlayout = QGridLayout(self)
boxlayout.addWidget(gb_top, 0, 0)
boxlayout.addWidget(gb_bottom, 1, 0)

# 2. QWidget 에 Layout 을 추가한다.
widget = QWidget()
widget.setLayout(boxlayout)

# 3. QMainWindow 에 QWidget 을 추가한다.
self.setCentralWidget(widget)

 

2. 그룹 박스에 위젯 추가하기

 

그룹박스에 위젯을 추가하기 위해서는 setLayout() 함수를 사용해야 합니다. 그 말은 먼저 Layout 객체에 위젯을 추가하고 그렇게 만든 Layout 객체를 그룹박스에 추가해야 된다는 의미입니다. 두 그룹박스에 각각 QCheckBox QRadioButton 을 추가했습니다.

from PyQt5.QtWidgets import QRadioButton, QCheckBox, QVBoxLayout

# 상단 그룹박스에 QCheckBox 추가
def add_groupbox_top(self, groupbox):
    check1 = QCheckBox('Check1')
    check2 = QCheckBox('Check2')
    check3 = QCheckBox('Check3')

    vbox = QVBoxLayout()
    vbox.addWidget(check1)
    vbox.addWidget(check2)
    vbox.addWidget(check3)
    
    groupbox.setLayout(vbox)

# 하단 그룹박스에 QRadioBox 추가
def add_groupbox_bottom(self, groupbox):
    radio1 = QRadioButton('Radio1')
    radio2 = QRadioButton('Radio2')
    radio3 = QRadioButton('Radio3')

    vbox = QVBoxLayout()
    vbox.addWidget(radio1)
    vbox.addWidget(radio2)
    vbox.addWidget(radio3)

    groupbox.setLayout(vbox)

반응형