PyQt5's QTabWidget has a method setCurrentIndex that you can use to get a particular tab to become the active tab. I can't seem to find any way to index by tab name though (which I set in Qt Designer). Is there any way (either direct or indirect) to index by name instead?
            Asked
            
        
        
            Active
            
        
            Viewed 3.3k times
        
    25
            
            
        
        NoDataDumpNoContribution
        
- 10,591
 - 9
 - 64
 - 104
 
        aoh
        
- 1,090
 - 2
 - 13
 - 25
 
4 Answers
25
            The tab name becomes the object-name of the widget set as the tab's page. When the tab is added, the page will be automatically re-parented to the internal stack-widget of the tab-widget. This means you can get a reference to the page like this:
page = tabwidget.findChild(QWidget, tabname)
and get its index like this:
index = tabwidget.indexOf(page)
or set the current tab directly by name like this:
tabwidget.setCurrentWidget(tabwidget.findChild(QWidget, tabname))
        ekhumoro
        
- 115,249
 - 20
 - 229
 - 336
 
8
            
            
        An alternative is to remember the tab's index when adding the tab. Then reuse it later in your code:
index = tabWidget.addTab(myWidget)
// ...
tabWidget.setCurrentIndex(index)
        jotrocken
        
- 2,263
 - 3
 - 27
 - 38
 
7
            
            
        A method that given a tab_name returns a list of indices for tabs whose names match the tab_name.
def get_indices(tab_name):
    return [index for index in range(tab_widget.count())
        if tab_name == tab_widget.tabText(index)]
After finding the index with this function then standard PyQt methods can be used.
Not the best way to do this, but might be useful sometimes.
        Valters J. Zakrevskis
        
- 91
 - 1
 - 6
 
1
            
            
        you can use indexOf() like this :
remove your tab :
self.tabWidget.removeTab(self.tabWidget.indexOf(self.YOUR_TAB_name))
add your tab:
self.tabWidget.addTab(self.YOUR_TAB_name, "name"))
        eyllanesc
        
- 235,170
 - 19
 - 170
 - 241
 
        Selimyh Selim
        
- 11
 - 2