QTabWidget
de PyQt5 a une méthode setCurrentIndex
que vous pouvez utiliser pour obtenir un onglet particulier pour devenir l'onglet actif. Je n'arrive pas à trouver un moyen d'indexer par nom d'onglet (que j'ai défini dans Qt Designer). Existe-t-il un moyen (direct ou indirect) d'indexer par nom à la place?
Le nom de l'onglet devient le nom d'objet du widget défini comme page de l'onglet. Lorsque l'onglet est ajouté, la page sera automatiquement re-parentée avec le widget de pile interne du widget d'onglet. Cela signifie que vous pouvez obtenir une référence à la page comme ceci:
page = tabwidget.findChild(QWidget, tabname)
et obtenez son index comme ceci:
index = tabwidget.indexOf(page)
ou définissez l'onglet actuel directement par son nom comme ceci:
tabwidget.setCurrentWidget(tabwidget.findChild(QWidget, tabname))
Une alternative est de se souvenir de l'index des onglets lors de son ajout:
index = tabWidget.addTab(myWidget)
tabWidget.setCurrentIndex(index)
Une méthode qui donne un tab_name renvoie une liste d'index pour les onglets dont les noms correspondent au tab_name.
def get_indices(tab_name):
return [index for index in range(tab_widget.count())
if tab_name == tab_widget.tabText(index)]
Après avoir trouvé l'index avec cette fonction, les méthodes PyQt standard peuvent être utilisées.
Pas la meilleure façon de le faire, mais peut être utile parfois.