PyQt: widget de QTab

Si un formulario tiene demasiados campos para mostrarse simultáneamente, se pueden organizar en diferentes páginas ubicadas debajo de cada pestaña de un widget con pestañas. El QTabWidget proporciona una barra de pestañas y un área de página. Se muestra la página debajo de la primera pestaña y otras están ocultas. El usuario puede ver cualquier página haciendo clic en la pestaña deseada.

A continuación se muestran algunos de los métodos de uso frecuente de la clase QTabWidget:

A continuación se muestran los métodos de QTabWidget más utilizados.

No Señor. Métodos y descripción
1

addTab()

Agrega una pestaña asociada con una página de widget

2

insertTab()

Inserta una pestaña con la página en la posición deseada

3

removeTab()

Elimina la pestaña en el índice dado

4

setCurrentIndex()

Establece el índice de la página actualmente visible como actual

5

setCurrentWidget()

Hace que la página visible sea la actual

6

setTabBar()

Establece la barra de pestañas del widget

7

setTabPosition()

La posición de las pestañas está controlada por los valores

QTabWidget.North encima de las páginas

QTabWidget.South debajo de las páginas

QTabWidget.West a la izquierda de las páginas

QTabWidget.East a la derecha de las páginas

8

setTabText()

Define la etiqueta asociada con el índice de la pestaña

Las siguientes señales están asociadas con el objeto QTabWidget:

No Señor. Métodos y descripción
1

currentChanged()

Siempre que cambie el índice de la página actual

2

tabClosedRequested()

Cuando se hace clic en el botón cerrar de la pestaña

Ejemplo

En el siguiente ejemplo, el contenido de un formulario se agrupa en tres categorías. Cada grupo de widgets se muestra en una pestaña diferente.

La ventana de nivel superior en sí es un QTabWidget. Se le agregan tres pestañas.

self.addTab(self.tab1,"Tab 1")
self.addTab(self.tab2,"Tab 2")
self.addTab(self.tab3,"Tab 3")

Cada pestaña muestra un subformulario diseñado con un diseño. El texto de la pestaña se modifica con la declaración.

self.setTabText(0,"Contact Details")
self.setTabText(1,"Personal Details")
self.setTabText(2,"Education Details")

El código completo es el siguiente:

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()

El código anterior produce la siguiente salida: