PyQt QGroupBox в Python с примерами
Класс PyQt QGroupBox используется в Python для создания рамки группового поля с заголовком.
Что такое PyQt QGroupBox
Групповой блок позволяет группировать связанные виджеты вместе в рамке с заголовком сверху. Чтобы создать групповой виджет, используйте класс QWidget:
group_box = QGroupBox(title)
Поскольку групповой блок не размещает дочерние виджеты автоматически, для добавления виджетов в групповой блок сначала необходимо создать объект макета:
layout = QVBoxLayout()
установите макет для группового поля:
group_box.setLayout(layout)
и используйте объект макета для добавления дочерних виджетов:
layout.addWidget(widget1) layout.addWidget(widget2) layout.addWidget(widget3)
Вот полные шаги по созданию группового блока и добавлению в него дочерних виджетов:
# 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)
Пример виджета PyQt QGroupBox
В следующем примере класс QGroupBox используется для создания виджетов групповых полей:
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())
Выход:
Как это работает.
- Сначала создайте групповой блок с заголовком «Личная информация»:
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)