PyQt QGroupBox

Summary: in this tutorial, you’ll learn how to use the PyQt QGroupBox class to create a group box frame with a title.

Introduction to the PyQt QGroupBox widget

A group box allows you to group related widgets together in a frame with a title on top. To create a group box widget, you use the QWidget class:

group_box = QGroupBox(title)Code language: Python (python)

Because a group box doesn’t automatically lay out the child widgets, to add widgets to the group box, you need to create a layout object first:

layout = QVBoxLayout()Code language: Python (python)

set the layout for the group box:

group_box.setLayout(layout)Code language: Python (python)

and use the layout object to add the child widgets:

layout.addWidget(widget1)
layout.addWidget(widget2)
layout.addWidget(widget3)Code language: Python (python)

Here are the complete steps for creating a group box and adding child widgets to it:

# Create a group box
group_box - QGroupBox(title)

# create a layout and set it for the group box
layout = QVBoxLayout()
group_box.setLayout(layout)

# add widgets to the layout
layout.addWidget(widget1)
layout.addWidget(widget2)
layout.addWidget(widget3)Code language: Python (python)

PyQt QGroupBox widget example

The following example uses the QGroupBox class to create group box widgets:

import sys
from PyQt6.QtWidgets import QApplication, QWidget,  QFormLayout, QPushButton, QGroupBox, QLineEdit, QDateEdit
from PyQt6.QtCore import Qt


class MainWindow(QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.setWindowTitle('PyQt QGroupBox')

        layout = QFormLayout(self)
        self.setLayout(layout)

        person_groupbox = QGroupBox('Personal Information')
        form_layout = QFormLayout()
        person_groupbox.setLayout(form_layout)

        form_layout.addRow('First Name:', QLineEdit(person_groupbox))
        form_layout.addRow('Last Name:', QLineEdit(person_groupbox))
        form_layout.addRow('DOB:', QDateEdit(person_groupbox))

        contact_groupbox = QGroupBox('Contact Information')
        form_layout = QFormLayout()
        contact_groupbox.setLayout(form_layout)
        form_layout.addRow('Phone Number:', QLineEdit(contact_groupbox))
        form_layout.addRow('Email Address:', QLineEdit(contact_groupbox))

        layout.addWidget(person_groupbox)
        layout.addWidget(contact_groupbox)
        layout.addWidget(QPushButton('Save'))

        # show the window
        self.show()


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

Output:

How it works.

First, create a group box with a title 'Personal Information':

person_groupbox = QGroupBox('Personal Information')Code language: Python (python)

Next, create a form layout and set it as the layout of the group box:

form_layout = QFormLayout()
person_groupbox.setLayout(form_layout)Code language: Python (python)

Then, add widgets to the form layout of the group box:

form_layout.addRow('First Name:', QLineEdit(person_groupbox))
form_layout.addRow('Last Name:', QLineEdit(person_groupbox))
form_layout.addRow('DOB:', QDateEdit(person_groupbox))Code language: Python (python)

After that, create the second group box:

contact_groupbox = QGroupBox('Contact Information')
form_layout = QFormLayout()
contact_groupbox.setLayout(form_layout)
form_layout.addRow('Phone Number:', QLineEdit(contact_groupbox))
form_layout.addRow('Email Address:', QLineEdit(contact_groupbox))Code language: Python (python)

Finally, place the group boxes in the main window:

layout.addWidget(person_groupbox)
layout.addWidget(contact_groupbox)Code language: Python (python)

Summary

  • Use PyQt QGroupBox class to create a group box widget.
Did you find this tutorial helpful ?