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 -