본문 바로가기
Beginning PyQt

QButtonGroup

by 어린왕자1234 2022. 5. 14.

1. QButtonGroup 인스턴스 만들기

   button_group = QButtonGroup(self)

2. 더해질 버튼이나 체크박스 생성

    rating_cb = QCheckBox("만족")

3. 버튼 더하기

    button_group.addButton(rating_cb)

4. signal slot 만들기

    button_group.buttonClicked.connect(self.checkboxClicked)  

 

# vertical_box.py

# Import necessary modules
import sys
from PyQt6.QtWidgets import (QApplication, QWidget, QLabel,
    QCheckBox, QPushButton, QButtonGroup, QVBoxLayout)
from PyQt6.QtCore import Qt
from PyQt6.QtGui import QFont

class MainWindow(QWidget):

    def __init__(self):
        super().__init__() 
        self.initializeUI()

    def initializeUI(self):
        """Set up the application's GUI."""
        self.setMinimumSize(350, 200) 
        self.setWindowTitle("QVBoxLayout Example")

        self.setUpMainWindow()
        self.show()

    def setUpMainWindow(self):
        """Create and arrange widgets in the main window."""
        header_label = QLabel("Chez PyQt6")
        header_label.setFont(QFont("Arial", 18))
        header_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
        question_label = QLabel(
            "How would you rate your service?")
        question_label.setAlignment(Qt.AlignmentFlag.AlignTop)

        ratings = ["Satisfied", "Average", "Not Satisfied"]   
        ratings_group = QButtonGroup(self)   
        ratings_group.buttonClicked.connect(self.checkboxClicked)                 

        self.confirm_button = QPushButton("Confirm")
        self.confirm_button.setEnabled(False)
        self.confirm_button.clicked.connect(self.close)

        # Organize the widgets into a layout
        main_v_box = QVBoxLayout()
        main_v_box.addWidget(header_label)
        main_v_box.addWidget(question_label)

        # Create the QCheckBox objects, then add 
        # them to the QButtonGroup and the main layout
        for cb in range(len(ratings)):
            rating_cb = QCheckBox(ratings[cb])
            ratings_group.addButton(rating_cb)
            main_v_box.addWidget(rating_cb)

        main_v_box.addWidget(self.confirm_button)

        # Set the layout for the main window
        self.setLayout(main_v_box)

    def checkboxClicked(self, button):
        """Check if a QCheckBox in the QButtonGroup has
        been clicked."""
        print(button.text())
        self.confirm_button.setEnabled(True)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    sys.exit(app.exec())

'Beginning PyQt' 카테고리의 다른 글

Menus, Toolbars, and More  (0) 2022.05.21
Nested Layouts  (0) 2022.05.15
Layout Management  (0) 2022.05.14
Handling Events in PyQt  (0) 2022.05.14
Login GUI and Registration Dialog  (0) 2022.05.14