Resumo : neste tutorial, você aprenderá como usar o PyQt QTabWidget
para criar um widget de aba.
Introdução ao PyQt QTabWidget
As guias permitem exibir informações relacionadas em páginas rotuladas separadas. As guias são úteis para dividir interfaces complexas em páginas menores que são mais fáceis de digerir pelos usuários.
Para criar um widget de guia, você usa a
classe. As etapas para usar o QTabWidget
são as seguintes:QTabWidget
Primeiro, crie o QTabWidget
objeto:
tab = QTabWidget()
layout.addWidget(tab)
Linguagem de código: Python ( python )
Segundo, crie uma página usando o
objeto como contêiner e adicione widgets filhos ao QWidget
:QWidget
page = QWidget(tab)
page_layout = QGridLayout()
page.setLayout(page_layout)
Linguagem de código: Python ( python )
Terceiro, adicione uma página ao widget da guia usando o addTab()
método:
tab.addTab(page,'Tab title')
Linguagem de código: Python ( python )
Por fim, repita a segunda e a terceira etapas para adicionar mais páginas à guia.
Exemplo PyQt QTabWidget
O exemplo a seguir ilustra como criar um widget de guia com duas páginas:
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QFormLayout, QGridLayout, QTabWidget, QLineEdit, QDateEdit, QPushButton
from PyQt6.QtCore import Qt
class MainWindow(QWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setWindowTitle('PyQt QTabWidget')
main_layout = QGridLayout(self)
self.setLayout(main_layout)
# create a tab widget
tab = QTabWidget(self)
# personal page
personal_page = QWidget(self)
layout = QFormLayout()
personal_page.setLayout(layout)
layout.addRow('First Name:', QLineEdit(self))
layout.addRow('Last Name:', QLineEdit(self))
layout.addRow('DOB:', QDateEdit(self))
# contact pane
contact_page = QWidget(self)
layout = QFormLayout()
contact_page.setLayout(layout)
layout.addRow('Phone Number:', QLineEdit(self))
layout.addRow('Email Address:', QLineEdit(self))
# add pane to the tab widget
tab.addTab(personal_page, 'Personal Info')
tab.addTab(contact_page, 'Contact Info')
main_layout.addWidget(tab, 0, 0, 2, 1)
main_layout.addWidget(QPushButton('Save'), 2, 0,
alignment=Qt.AlignmentFlag.AlignLeft)
main_layout.addWidget(QPushButton('Cancel'), 2, 0,
alignment=Qt.AlignmentFlag.AlignRight)
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. (Vamos nos concentrar apenas na construção do widget da guia)
Primeiro, crie um widget de guia:
tab = QTabWidget(self)
Linguagem de código: Python ( python )
Em seguida, crie uma página usando QWidget
e defina seu layout como QFormLayout
:
personal_page = QWidget(self)
layout = QFormLayout()
personal_page.setLayout(layout)
Linguagem de código: Python ( python )
Em seguida, adicione QLineEdit
widgets ao person_page
widget:
layout.addRow('First Name:', QLineEdit(self))
layout.addRow('Last Name:', QLineEdit(self))
layout.addRow('DOB:', QDateEdit(self))
Linguagem de código: Python ( python )
Depois disso, crie uma nova página que contenha os campos de informações de contato:
contact_page = QWidget(self)
layout = QFormLayout()
contact_page.setLayout(layout)
layout.addRow('Phone Number:', QLineEdit(self))
layout.addRow('Email Address:', QLineEdit(self))
Linguagem de código: Python ( python )
Finalmente, adicione páginas à guia usando o add_tab()
método:
tab.addTab(personal_page, 'Personal Info')
tab.addTab(contact_page, 'Contact Info')
Linguagem de código: Python ( python )
Opções do QTabWidget
O QTabWidget
tem algumas opções notáveis.
Móvel
Para tornar a guia móvel, você define a movable
propriedade como True
:
tab = QTabWidget(self,movable=True)
Linguagem de código: Python ( python )
Observe que você pode inicializar a propriedade móvel ao criar o widget de guia.
Ou você pode usar o setMovable()
método do objeto widget de guia:
tab.setMovable(True)
Linguagem de código: Python ( python )
abasFecháveis
Se tabsClosble
for verdade, as guias exibirão um botão fechar nas guias.
tab = QTabWidget(self,tabsClosable=True)
Linguagem de código: Python ( python )
Ou você pode usar o setTabsClosable()
método:
tab.setTabsClosable(True)
Linguagem de código: Python ( python )
Quando o botão Fechar é clicado, o QTabWidget
emite o tabCloseRequested
sinal. Se quiser fechar a aba, você precisa se conectar a este sinal e implementar o código para fechar a aba correspondente.
Formato da guia
A aba tem duas formas arredondadas e triangulares. O arredondado é o padrão.
Para definir o formato da guia, você pode usar o tabShape
argumento ao criar um novo widget de guia:
tab = QTabWidget(self, tabShape=QTabWidget.TabShape.Triangular)
Linguagem de código: Python ( python )
Ou você pode usar o setTabShape()
método:
tab.setTabShape(QTabWidget.TabShape.Triangular)
Linguagem de código: Python ( python )
Posições da guia
As guias podem ter quatro posições determinadas pela TabPosition
enumeração:
- Norte
- Sul
- Oeste
- Leste
Para definir a posição da guia, você pode usar o tabPosition
argumento ao criar o widget da guia:
tab = QTabWidget(self, tabPosition=QTabWidget.TabPosition.West)
Linguagem de código: Python ( python )
Ou você pode usar o setTabPosition()
método:
tab.setTabPosition(QTabWidget.TabPosition.West)
Linguagem de código: Python ( python )
Resumo
- Use
QTabWidget
para criar um widget de guia. - As guias podem ser móveis, fecháveis e ter posições diferentes.