티스토리 뷰
PyQt5는 Python을 사용하여 데스크톱 애플리케이션을 개발할 때 매우 유용한 도구입니다. 그 중에서도 QGroupBox는 관련된 위젯들을 그룹화하여 사용자 인터페이스를 보다 체계적이고 깔끔하게 구성하는 데 도움을 줍니다.
이 글에서는 PyQt5의 QGroupBox를 활용하여 위젯 그룹을 관리하는 방법에 대해 자세히 알아보겠습니다.
QGroupBox란 무엇인가?
QGroupBox는 여러 위젯을 하나의 그룹으로 묶어주는 컨테이너 위젯입니다. 주로 라디오 버튼, 체크박스와 같은 옵션 위젯들을 그룹으로 묶어 사용자에게 보다 명확한 정보를 제공할 때 사용됩니다. QGroupBox는 제목과 함께 프레임을 제공하여 시각적으로 구분된 영역을 만들어 줍니다.
QGroupBox 사용법
PyQt5에서 QGroupBox를 사용하는 방법은 비교적 간단합니다. 다음 단계별로 QGroupBox를 설정하고 사용하는 방법을 설명하겠습니다.
1. QGroupBox 생성
QGroupBox를 생성할 때는 제목을 지정할 수 있습니다. 제목은 사용자가 그룹의 목적이나 내용을 쉽게 이해할 수 있도록 도와줍니다.
from PyQt5.QtWidgets import QGroupBox
group_box = QGroupBox('설정 옵션')
위 코드에서는 "설정 옵션"이라는 제목을 가진 QGroupBox를 생성했습니다.
2. 레이아웃 설정
QGroupBox는 자체적으로 위젯을 배치하지 않기 때문에, 내부에 레이아웃을 설정해야 합니다. 일반적으로 QVBoxLayout
이나 QHBoxLayout
을 사용하여 위젯을 수직 또는 수평으로 배치합니다.
from PyQt5.QtWidgets import QVBoxLayout
layout = QVBoxLayout()
group_box.setLayout(layout)
3. 위젯 추가
레이아웃에 원하는 위젯들을 추가합니다. 예를 들어, 여러 개의 체크박스와 라디오 버튼을 추가할 수 있습니다.
from PyQt5.QtWidgets import QCheckBox, QRadioButton
check1 = QCheckBox('옵션 1')
check2 = QCheckBox('옵션 2')
radio1 = QRadioButton('옵션 A')
layout.addWidget(check1)
layout.addWidget(check2)
layout.addWidget(radio1)
위의 코드는 두 개의 체크박스와 하나의 라디오 버튼을 레이아웃에 추가하는 예제입니다.
4. 메인 윈도우에 추가
마지막으로, 그룹박스를 메인 윈도우의 레이아웃에 추가합니다. 이렇게 하면 그룹박스가 메인 윈도우 내에서 표시됩니다.
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout
app = QApplication([])
window = QWidget()
main_layout = QVBoxLayout()
main_layout.addWidget(group_box)
window.setLayout(main_layout)
window.show()
app.exec_()
위 코드는 기본적인 PyQt5 애플리케이션 구조로, 그룹박스를 메인 윈도우에 추가하여 표시합니다.
실제 예제: 개인 정보 입력 폼 만들기
이제 실제로 두 개의 그룹박스를 생성하고 각각 다른 정보를 입력받는 폼을 만들어 보겠습니다. 첫 번째 그룹박스는 개인 정보를 입력받고, 두 번째 그룹박스는 연락처 정보를 입력받습니다.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QFormLayout, QPushButton, QGroupBox, QLineEdit, QDateEdit
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('PyQt5 QGroupBox Example')
layout = QFormLayout(self)
self.setLayout(layout)
# Personal Information Group Box
person_groupbox = QGroupBox('Personal Information')
form_layout = QFormLayout()
person_groupbox.setLayout(form_layout)
form_layout.addRow('First Name:', QLineEdit())
form_layout.addRow('Last Name:', QLineEdit())
form_layout.addRow('DOB:', QDateEdit())
# Contact Information Group Box
contact_groupbox = QGroupBox('Contact Information')
form_layout_contact = QFormLayout()
contact_groupbox.setLayout(form_layout_contact)
form_layout_contact.addRow('Phone Number:', QLineEdit())
form_layout_contact.addRow('Email Address:', QLineEdit())
layout.addWidget(person_groupbox)
layout.addWidget(contact_groupbox)
layout.addWidget(QPushButton('Save'))
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
이 예제에서는 QFormLayout
을 사용하여 각 그룹박스 안에 입력 필드를 배치했습니다. "Personal Information" 그룹박스에는 이름과 생년월일 입력 필드가 있고, "Contact Information" 그룹박스에는 전화번호와 이메일 주소 입력 필드가 있습니다. 마지막으로 "Save" 버튼이 있어 사용자가 입력한 정보를 저장할 수 있습니다.
결론
PyQt5의 QGroupBox는 사용자 인터페이스에서 관련된 항목들을 논리적으로 묶어주는 강력한 도구입니다. 이를 통해 사용자에게 보다 직관적인 UI를 제공할 수 있으며, 코드의 가독성 및 유지보수성도 향상됩니다. 다양한 레이아웃과 결합하여 복잡한 GUI 애플리케이션을 쉽게 구축할 수 있습니다. PyQt5를 활용한 GUI 개발에 있어 QGroupBox는 꼭 알아두어야 할 유용한 기능 중 하나입니다.