PyQt - Widget QTab
Se um formulário tiver muitos campos para serem exibidos simultaneamente, eles podem ser organizados em páginas diferentes colocadas em cada guia de um widget com guias. O QTabWidget fornece uma barra de guias e uma área de página. A página na primeira guia é exibida e outras são ocultadas. O usuário pode visualizar qualquer página clicando na guia desejada.
A seguir estão alguns dos métodos frequentemente usados da classe QTabWidget -
A seguir estão os métodos de QTabWidget mais comumente usados.
Sr. Não. | Métodos e Descrição |
---|---|
1 | addTab() Adiciona uma guia associada a uma página de widget |
2 | insertTab() Insere uma guia com a página na posição desejada |
3 | removeTab() Remove a guia em determinado índice |
4 | setCurrentIndex() Define o índice da página atualmente visível como atual |
5 | setCurrentWidget() Torna a página visível como atual |
6 | setTabBar() Define a barra de guias do widget |
7 | setTabPosition() A posição das guias é controlada pelos valores QTabWidget.North acima das páginas QTabWidget.South abaixo das páginas QTabWidget.West à esquerda das páginas QTabWidget.East à direita das páginas |
8 | setTabText() Define o rótulo associado ao índice da guia |
Os seguintes sinais estão associados ao objeto QTabWidget -
Sr. Não. | Métodos e Descrição |
---|---|
1 | currentChanged() Sempre que o índice da página atual muda |
2 | tabClosedRequested() Quando o botão Fechar na guia é clicado |
Exemplo
No exemplo a seguir, o conteúdo de um formulário é agrupado em três categorias. Cada grupo de widgets é exibido em uma guia diferente.
A própria janela de nível superior é um QTabWidget. Três guias são adicionadas a ele.
self.addTab(self.tab1,"Tab 1")
self.addTab(self.tab2,"Tab 2")
self.addTab(self.tab3,"Tab 3")
Cada guia exibe um subformulário projetado usando um layout. O texto da guia é alterado pela declaração.
self.setTabText(0,"Contact Details")
self.setTabText(1,"Personal Details")
self.setTabText(2,"Education Details")
O código completo é o seguinte -
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class tabdemo(QTabWidget):
def __init__(self, parent = None):
super(tabdemo, self).__init__(parent)
self.tab1 = QWidget()
self.tab2 = QWidget()
self.tab3 = QWidget()
self.addTab(self.tab1,"Tab 1")
self.addTab(self.tab2,"Tab 2")
self.addTab(self.tab3,"Tab 3")
self.tab1UI()
self.tab2UI()
self.tab3UI()
self.setWindowTitle("tab demo")
def tab1UI(self):
layout = QFormLayout()
layout.addRow("Name",QLineEdit())
layout.addRow("Address",QLineEdit())
self.setTabText(0,"Contact Details")
self.tab1.setLayout(layout)
def tab2UI(self):
layout = QFormLayout()
sex = QHBoxLayout()
sex.addWidget(QRadioButton("Male"))
sex.addWidget(QRadioButton("Female"))
layout.addRow(QLabel("Sex"),sex)
layout.addRow("Date of Birth",QLineEdit())
self.setTabText(1,"Personal Details")
self.tab2.setLayout(layout)
def tab3UI(self):
layout = QHBoxLayout()
layout.addWidget(QLabel("subjects"))
layout.addWidget(QCheckBox("Physics"))
layout.addWidget(QCheckBox("Maths"))
self.setTabText(2,"Education Details")
self.tab3.setLayout(layout)
def main():
app = QApplication(sys.argv)
ex = tabdemo()
ex.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
O código acima produz a seguinte saída -