PyQt QGroupBox

Resumo : neste tutorial, você aprenderá como usar a QGroupBoxclasse PyQt para criar um quadro de caixa de grupo com um título.

Introdução ao widget PyQt QGroupBox

Uma caixa de grupo permite agrupar widgets relacionados em um quadro com um título no topo. Para criar um widget de caixa de grupo, você usa a QWidgetclasse:

group_box = QGroupBox(title)Linguagem de código:  Python  ( python )

Como uma caixa de grupo não organiza automaticamente os widgets filhos, para adicionar widgets à caixa de grupo, você precisa primeiro criar um objeto de layout:

layout = QVBoxLayout()Linguagem de código:  Python  ( python )

defina o layout da caixa de grupo:

group_box.setLayout(layout)Linguagem de código:  Python  ( python )

e use o objeto de layout para adicionar os widgets filhos:

layout.addWidget(widget1)
layout.addWidget(widget2)
layout.addWidget(widget3)Linguagem de código:  Python  ( python )

Aqui estão as etapas completas para criar uma caixa de grupo e adicionar widgets filhos a ela:

# 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)Linguagem de código:  Python  ( python )

Exemplo de widget PyQt QGroupBox

O exemplo a seguir usa a QGroupBoxclasse para criar widgets de caixa de grupo:

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())Linguagem de código:  Python  ( python )

Saída:

Como funciona.

Primeiro, crie uma caixa de grupo com um título 'Personal Information':

person_groupbox = QGroupBox('Personal Information')Linguagem de código:  Python  ( python )

A seguir, crie um layout de formulário e defina-o como o layout da caixa de grupo:

form_layout = QFormLayout()
person_groupbox.setLayout(form_layout)Linguagem de código:  Python  ( python )

Em seguida, adicione widgets ao layout do formulário da caixa de grupo:

form_layout.addRow('First Name:', QLineEdit(person_groupbox))
form_layout.addRow('Last Name:', QLineEdit(person_groupbox))
form_layout.addRow('DOB:', QDateEdit(person_groupbox))Linguagem de código:  Python  ( python )

Depois disso, crie a segunda caixa de grupo:

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))Linguagem de código:  Python  ( python )

Finalmente, coloque as caixas de grupo na janela principal:

layout.addWidget(person_groupbox)
layout.addWidget(contact_groupbox)Linguagem de código:  Python  ( python )

Resumo

  • Use QGroupBoxa classe PyQt para criar um widget de caixa de grupo.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *