Меняем отображение вкладок QTabWidget

Предположим есть интерфейс на PyQt5, в интерфейсе есть элемент класса QTabWidget. 
В нем реализовано несколько вкладок (например 7 вкладок). В каждой вкладке может быть свой функционал, но сейчас это не важно. Некоторые вкладки используются редко и нам незачем их отображать постоянно. Стоит задача оперативно управлять количеством вкладок.
Нужно сделать таким образом, чтобы когда мы в верхнем меню ставили галочку
интерфейс расширенный - отображаются все вкладки, снимаем галочку - вкладки по умолчанию.
Итак приступим.

Итак есть интерфейс на PyQt5, в интерфейсе есть элемент класса QTabWidget. В нем реализовано несколько вкладок (например 7 вкладок). Есть также QMenuBar с title «Интерфейс», в нем есть chekable элемент QAction c текстом «расширенный». Сделаем так, чтобы «по умолчанию» отображались 1,2,3,6 и 7 вкладки. Начнем с создания интерфейса и реализации требуемого функционала.

Python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTabWidget, QWidget, QVBoxLayout, QAction, QMenuBar

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.initUI()
        
    def initUI(self):
        self.setWindowTitle("Интерфейс")
        
        self.tabWidget = QTabWidget()
        self.tabs = [QWidget() for _ in range(7)]
        self.tab_names = ['Вкладка 1', 'Вкладка 2', 'Вкладка 3', 'Вкладка 4', 'Вкладка 5', 'Вкладка 6', 'Вкладка 7']
        
        for i, tab in enumerate(self.tabs):
            self.tabWidget.addTab(tab, self.tab_names[i])
        
        self.setCentralWidget(self.tabWidget)
        
        menubar = self.menuBar()
        interface_menu = menubar.addMenu('Интерфейс')
        
        self.extended_action = QAction('расширенный', self, checkable=True)
        self.extended_action.triggered.connect(self.toggle_extended_mode)
        
        interface_menu.addAction(self.extended_action)
        
        self.show_tabs([0, 1, 2, 5, 6])
        
    def toggle_extended_mode(self, checked):
        if checked:
            self.show_tabs(list(range(7)))
        else:
            self.show_tabs([0, 1, 2, 5, 6])
            
    def show_tabs(self, indexes):
        current_tabs = [self.tabWidget.widget(i) for i in range(self.tabWidget.count())]
        for tab in current_tabs:
            self.tabWidget.removeTab(self.tabWidget.indexOf(tab))
        
        for i in indexes:
            self.tabWidget.addTab(self.tabs[i], self.tab_names[i])

if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainWindow = MainWindow()
    mainWindow.show()  # Отображение основного окна
    sys.exit(app.exec_())

Этот код создает основное окно с QTabWidget и QMenuBar. В QMenuBar добавлен пункт «Интерфейс» с чекбоксом «расширенный».

Вот шаги, которые выполняет код:

  1. Создание вкладок: Создаются семь вкладок и добавляются в QTabWidget.
  2. Создание меню: Создается меню «Интерфейс» с чекбоксом «расширенный».
  3. Обработчик чекбокса: При клике на чекбокс вызывается метод toggle_extended_mode, который отображает либо все вкладки, либо только определенные.
  4. Метод show_tabs: Этот метод удаляет все вкладки из QTabWidget и добавляет обратно только те, которые указаны в списке indexes.

Теперь при запуске вкладки будут отображаться в соответствии с состоянием элемента QAction «расширенный».