PyQtQWidget

Resumo : neste tutorial, você aprenderá como usar PyQt QWidgetcomo contêiner de outros widgets.

Introdução ao PyQt QWidget

A QWidgeté a classe base de todos os outros widgets. A QWidgeté uma área em branco para conter outros widgets. Portanto, é útil como contêiner para organizar widgets filhos.

O QWidget é como o Frame no Tkinter para hospedar outros widgets.

A seguir mostramos como criar um QWidgetobjeto dentro da janela principal ou de um widget pai:

widget = QWidget(parent)Linguagem de código:  Python  ( python )

Pode parentser o objeto da janela principal ou o objeto do widget pai ao qual o QWidgetobjeto pertence.

Fornecer o widget pai como um argumento garante QWidgetque os widgets filhos sejam coletados como lixo quando o pai o é e limita sua visibilidade apenas ao widget pai.

Exemplo PyQt QWidget

O programa a seguir mostra como usar o QWidgetcomo contêiner de outros widgets:

import sys
from PyQt6.QtWidgets import QApplication, QWidget,  QLineEdit,  QFormLayout,  QHBoxLayout


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

        self.setWindowTitle('PyQt Widget Demo')

        # create an input pane
        layout = QHBoxLayout()
        self.setLayout(layout)

        # person pane
        person_pane = QWidget(self)
        form_layout = QFormLayout()
        person_pane.setLayout(form_layout)
        form_layout.addRow('First Name:', QLineEdit(person_pane))
        form_layout.addRow('Last Name:', QLineEdit(person_pane))
        form_layout.addRow('Date of Birth:', QLineEdit(person_pane))
        form_layout.addRow('Email Address:', QLineEdit(person_pane))
        form_layout.addRow('Phone Number:', QLineEdit(person_pane))
        layout.addWidget(person_pane)

        # address pane
        address_pane = QWidget(self)
        form_layout = QFormLayout()
        address_pane.setLayout(form_layout)
        form_layout.addRow('Street:', QLineEdit(address_pane))
        form_layout.addRow('City:', QLineEdit(address_pane))
        form_layout.addRow('State/Province:', QLineEdit(address_pane))
        form_layout.addRow('Zip Code:', QLineEdit(address_pane))
        form_layout.addRow('Country:', QLineEdit(address_pane))
        layout.addWidget(address_pane)

        # show the window
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    sys.exit(app.exec())Linguagem de código:  Python  ( python )

Como funciona.

Primeiro, defina o layout da janela principal como QHBoxLayout:

layout = QHBoxLayout()
self.setLayout(layout)Linguagem de código:  Python  ( python )

Segundo, crie um widget como um contêiner ( person_pane) que use o layout do formulário e adicione outros widgets ao contêiner:

person_pane = QWidget(self)
form_layout = QFormLayout()
person_pane.setLayout(form_layout)
form_layout.addRow('First Name:', QLineEdit(person_pane))
form_layout.addRow('Last Name:', QLineEdit(person_pane))
form_layout.addRow('Date of Birth:', QLineEdit(person_pane))
form_layout.addRow('Email Address:', QLineEdit(person_pane))
form_layout.addRow('Phone Number:', QLineEdit(person_pane))Linguagem de código:  Python  ( python )

Terceiro, crie outro widget como um contêiner ( address_pane) que também use o layout do formulário e adicione outros widgets ao contêiner:

address_pane = QWidget(self)
form_layout = QFormLayout()
address_pane.setLayout(form_layout)
form_layout.addRow('Street:', QLineEdit(address_pane))
form_layout.addRow('City:', QLineEdit(address_pane))
form_layout.addRow('State/Province:', QLineEdit(address_pane))
form_layout.addRow('Zip Code:', QLineEdit(address_pane))
form_layout.addRow('Country:', QLineEdit(address_pane))Linguagem de código:  Python  ( python )

Finalmente, adicione o widget à janela principal:

layout.addWidget(person_pane)
layout.addWidget(address_pane)Linguagem de código:  Python  ( python )

Resumo

  • Use PyQt QWidgetcomo contêiner de outros widgets.

Deixe um comentário

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