Resumo : neste tutorial, você aprenderá como usar PyQt QWidget
como contêiner de outros widgets.
Introdução ao PyQt QWidget
A
é 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.QWidget
O QWidget é como o Frame no Tkinter para hospedar outros widgets.
A seguir mostramos como criar um QWidget
objeto dentro da janela principal ou de um widget pai:
widget = QWidget(parent)
Linguagem de código: Python ( python )
Pode parent
ser o objeto da janela principal ou o objeto do widget pai ao qual o QWidget
objeto pertence.
Fornecer o widget pai como um argumento garante QWidget
que 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 QWidget
como 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
QWidget
como contêiner de outros widgets.