PyQt - Widget QTab
Se un modulo ha troppi campi per essere visualizzati simultaneamente, possono essere disposti in diverse pagine posizionate sotto ciascuna scheda di un widget a schede. QTabWidget fornisce una barra delle schede e un'area della pagina. Viene visualizzata la pagina sotto la prima scheda e le altre sono nascoste. L'utente può visualizzare qualsiasi pagina facendo clic sulla scheda desiderata.
Di seguito sono riportati alcuni dei metodi utilizzati di frequente della classe QTabWidget:
Di seguito sono riportati i metodi più comunemente usati di QTabWidget.
Sr.No. | Metodi e descrizione |
---|---|
1 | addTab() Aggiunge una scheda associata a una pagina widget |
2 | insertTab() Inserisce una scheda con la pagina nella posizione desiderata |
3 | removeTab() Rimuove la scheda in un dato indice |
4 | setCurrentIndex() Imposta l'indice della pagina attualmente visibile come corrente |
5 | setCurrentWidget() Rende la pagina visibile come corrente |
6 | setTabBar() Imposta la barra delle schede del widget |
7 | setTabPosition() La posizione delle schede è controllata dai valori QTabWidget.North sopra le pagine QTabWidget.South sotto le pagine QTabWidget.West a sinistra delle pagine QTabWidget.East a destra delle pagine |
8 | setTabText() Definisce l'etichetta associata all'indice della scheda |
I seguenti segnali sono associati all'oggetto QTabWidget:
Sr.No. | Metodi e descrizione |
---|---|
1 | currentChanged() Ogni volta che l'indice della pagina corrente cambia |
2 | tabClosedRequested() Quando si fa clic sul pulsante di chiusura nella scheda |
Esempio
Nell'esempio seguente, il contenuto di un modulo è raggruppato in tre categorie. Ogni gruppo di widget viene visualizzato in una scheda diversa.
La finestra di primo livello è di per sé un QTabWidget. Vengono aggiunte tre schede.
self.addTab(self.tab1,"Tab 1")
self.addTab(self.tab2,"Tab 2")
self.addTab(self.tab3,"Tab 3")
Ogni scheda visualizza un sottomodulo progettato utilizzando un layout. Il testo della tabulazione viene modificato dall'istruzione.
self.setTabText(0,"Contact Details")
self.setTabText(1,"Personal Details")
self.setTabText(2,"Education Details")
Il codice completo è il seguente:
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()
Il codice precedente produce il seguente output: