PyQt - Widget QTab

Si un formulaire comporte trop de champs pour être affichés simultanément, ils peuvent être organisés en différentes pages placées sous chaque onglet d'un widget à onglets. Le QTabWidget fournit une barre d'onglets et une zone de page. La page sous le premier onglet s'affiche et les autres sont masquées. L'utilisateur peut afficher n'importe quelle page en cliquant sur l'onglet souhaité.

Voici quelques-unes des méthodes fréquemment utilisées de la classe QTabWidget -

Vous trouverez ci-dessous les méthodes les plus couramment utilisées de QTabWidget.

N ° Sr. Méthodes et description
1

addTab()

Ajoute un onglet associé à une page de widget

2

insertTab()

Insère un onglet avec la page à la position souhaitée

3

removeTab()

Supprime l'onglet à un index donné

4

setCurrentIndex()

Définit l'index de la page actuellement visible comme courant

5

setCurrentWidget()

Rend la page visible comme actuelle

6

setTabBar()

Définit la barre d'onglets du widget

sept

setTabPosition()

La position des onglets est contrôlée par les valeurs

QTabWidget.Nord au-dessus des pages

QTabWidget.South sous les pages

QTabWidget.West à gauche des pages

QTabWidget.East à droite des pages

8

setTabText()

Définit l'étiquette associée à l'index de l'onglet

Les signaux suivants sont associés à l'objet QTabWidget -

N ° Sr. Méthodes et description
1

currentChanged()

Chaque fois que l'index de la page actuelle change

2

tabClosedRequested()

Lorsque vous cliquez sur le bouton de fermeture de l'onglet

Exemple

Dans l'exemple suivant, le contenu d'un formulaire est regroupé en trois catégories. Chaque groupe de widgets est affiché sous un onglet différent.

La fenêtre de niveau supérieur elle-même est un QTabWidget. Trois onglets y sont ajoutés.

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

Chaque onglet affiche un sous-formulaire conçu à l'aide d'une mise en page. Le texte de l'onglet est modifié par l'instruction.

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

Le code complet est le suivant -

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

Le code ci-dessus produit la sortie suivante -