Локализация виджета класс QTabWidget

Пытаюсь локализировать виджет класса QTabWidget и мне выдаёт ошибку:

TypeError: translate(str, str, disambiguation: str = None, n: int = -1): argument 2 has unexpected type 'int'

Я пишу через метод setTabText (я пометил в файле options.py крестиками строку, где ошибка) я вроде всё правильно указал индекс и название вкладки, но ошибка. Буду очень благодарен

введите сюда описание изображения

файл main.py:

from PyQt5.QtWidgets import QApplication
from PyQt5 import QtCore
from PyQt5 import QtGui
from PyQt5 import QtWidgets
from options import LocalizationMainWindow
import sys


class MainWindow(QtWidgets.QMainWindow):

    def __init__(self):
        QtWidgets.QMainWindow.__init__(self)

        self.UserWindowSettings = UserWindowSettings()

        self.centralWidget = QtWidgets.QWidget() # создаём центральный виджет
        self.setCentralWidget(self.centralWidget)
        self.mainLayout = QtWidgets.QVBoxLayout(self.centralWidget)

        # для локализации интерфейса
        self.translator = QtCore.QTranslator(self)
        self.LocalizationMainWindow = LocalizationMainWindow(self)
        
        # settings
        self.setFixedSize(600, 640)
        self.setWindowTitle(" B U G ")

        # делаем сборку
        self.widget_main = self.createPage()
        self.mainLayout.addWidget(self.widget_main)
        self.createMenuBar()
        self.createToolBar()

        # условия для локализация
        if self.language_english.isChecked():
            self.language_english.trigger()                                        
        else:
            self.language_russian.trigger()

        # вывод информации на строку состояния
        self.label_1 = QtWidgets.QLabel("v 1.0")
        self.label_1.setStyleSheet("font-size: 18px; color: black;")

        self.status_1.addPermanentWidget(self.label_1)

        self.status_1.showMessage("Добро пожаловать", msecs = 4000)
        
        self.setStatusBar(self.status_1)


    def createPage(self):
        # создание страницы в основном окне

        self.widget_page = QtWidgets.QWidget()

        # создание обьектов
        self.button_1 = QtWidgets.QPushButton("Перейти к поиску телефонных\
                                            \nномеров и электронных почт")
        
        self.formbox = QtWidgets.QGridLayout()

        # добавление в box и в окно
        self.formbox.addWidget(self.button_1)   
        self.formbox.setSpacing(20)
        self.widget_page.setLayout(self.formbox)

        return self.widget_page


    def createMenuBar(self):

        # создание панели-меню и строки состоянии
        self.menu = QtWidgets.QMenuBar()
        self.status_1 = QtWidgets.QStatusBar()

        # создание категорий меню и функционал в ней
        self.menu_options = QtWidgets.QMenu("Опции")
        self.menu_view = QtWidgets.QMenu('Вид')
        self.menu_help = QtWidgets.QMenu("Справка")

        # просто настройки
        self.sub_menu_options = QtWidgets.QMenu("Настройки")

        self.clear_page = QtWidgets.QAction("Очистка страницы после выхода")
        self.clear_page.setCheckable(True)

        self.user_settings = QtWidgets.QAction("Пользовательские настройки")

        self.sub_menu_options.addAction(self.clear_page)
        self.sub_menu_options.addAction(self.user_settings)

        self.menu_options.addMenu(self.sub_menu_options)

        # настройка языка
        self.delimiter_1 = QtWidgets.QAction()
        self.delimiter_1.setSeparator(True)

        self.menu_options.addAction(self.delimiter_1)

        self.language_menu = QtWidgets.QMenu("Язык")

        self.language_russian = QtWidgets.QAction("Русcкий (ru)")
        self.language_russian.setCheckable(True)
        self.language_russian.setChecked(True)
        self.language_english = QtWidgets.QAction("English (en)")
        self.language_english.setCheckable(True)
        
        self.group_action_6 = QtWidgets.QActionGroup(self.language_menu)

        self.group_action_6.addAction(self.language_english)
        self.group_action_6.addAction(self.language_russian)

        self.language_menu.addAction(self.language_english)
        self.language_menu.addAction(self.language_russian)

        # датчик если будет изменения внутри
        self.group_action_6.triggered.connect(self.clickedLanguage)

        self.menu_options.addMenu(self.language_menu)

        # добавляем отдельное меню в главное меню
        self.menu.addMenu(self.menu_options)
        self.menu.addMenu(self.menu_view)
        self.menu.addMenu(self.menu_help)

        # датчики
        self.user_settings.triggered.connect(self.clickedActionUser)

        # добавляем в окно
        self.setMenuBar(self.menu)


    def createToolBar(self):
        self.toolBar = QtWidgets.QToolBar()

        self.toolButton_back = QtWidgets.QAction("Вернуться назад")
        self.toolButton_run_file = QtWidgets.QAction("Открыть файл")
        self.toolButton_run_file.setEnabled(False)
        
        self.toolBar.addAction(self.toolButton_back)
        self.toolBar.addAction(self.toolButton_run_file)

        self.addToolBar(self.toolBar)


    def clickedActionUser(self):
        self.UserWindowSettings.show()


    def clickedLanguage(self, lang):
        # английский язык
        if lang.text() == "English (en)":
            
            # здесь мы загружаем наши переводы из файла "ru-eng.qm"
            self.translator.load('ru-eng')
            app = QApplication.instance()
            app.installTranslator(self.translator)

        # русский язык
        else:
            app = QApplication.instance()
            app.removeTranslator(self.translator) 

    def changeEvent(self, event):
        # метод для локализации интерфейса
        if event.type() == QtCore.QEvent.LanguageChange:
            self.LocalizationMainWindow.retranslateUi()


class UserWindowSettings(QtWidgets.QDialog):
    """Класс реализующий пользовательские настройки
    в виде выводящего окна, и также сохранения
    настроек в файлы конфигурации """

    def __init__(self, parent = None):
        QtWidgets.QDialog.__init__(self, parent)
        self.parent = parent

        # settings
        self.setFixedSize(460, 530)
        self.setWindowTitle("Пользовательские настройки")
        self.setWindowFlags(QtCore.Qt.Dialog)
        self.setWindowModality(QtCore.Qt.ApplicationModal)

        # делаем сборку
        self.createPage()


    def createPage(self):
        self.gridBox = QtWidgets.QGridLayout()
        self.hBox = QtWidgets.QHBoxLayout()

        self.tabWidget = QtWidgets.QTabWidget()
        self.button_save = QtWidgets.QPushButton("Применить")
        self.button_save.setEnabled(False)
        self.button_ok = QtWidgets.QPushButton("Ок")

        self.hBox.addWidget(self.button_ok)
        self.hBox.addWidget(self.button_save)

        self.gridBox.addWidget(self.tabWidget, 0, 0)
        self.gridBox.addItem(self.hBox, 1, 0, alignment = QtCore.Qt.AlignRight)
        self.setLayout(self.gridBox)

        # сборка tab-виджетов
        self.createTabWidget_Search()
        self.createTabWidget_Generator()

        # датчики
        self.button_ok.clicked.connect(self.accept)
        self.button_save.clicked.connect(self.accept)


    def createTabWidget_Search(self):
        self.tabWidget_1 = QtWidgets.QWidget()
        self.formBox_1 = QtWidgets.QFormLayout()
        self.formBox_1.setVerticalSpacing(17)
        self.formBox_1.setFieldGrowthPolicy(QtWidgets.QFormLayout.FieldsStayAtSizeHint)

        # настройка формата файла
        self.groupBoxFormatFile = QtWidgets.QGroupBox("Формат файла для сохранения данных")
        self.groupBoxFormatFile.setFlat(True)
        
        self.hBoxFormat = QtWidgets.QHBoxLayout()

        self.checkFileBoxTxt = QtWidgets.QCheckBox("txt")
        self.checkFileBoxTxt.setChecked(True)
        self.checkFileBoxCsv = QtWidgets.QCheckBox("csv")

            # состояние при котором идёт разблокировка кнопки
        self.checkFileBoxTxt.stateChanged.connect(self.enableApplyButton)
        self.checkFileBoxCsv.stateChanged.connect(self.enableApplyButton)

        self.hBoxFormat.addWidget(self.checkFileBoxTxt)
        self.hBoxFormat.addWidget(self.checkFileBoxCsv)

        self.groupBoxFormatFile.setLayout(self.hBoxFormat)
        self.formBox_1.addWidget(self.groupBoxFormatFile)


        self.tabWidget_1.setLayout(self.formBox_1)
        self.tabWidget.addTab(self.tabWidget_1, "настройки поиска")


    def createTabWidget_Generator(self):
        self.tabWidget_2 = QtWidgets.QWidget()
        self.formBox_2 = QtWidgets.QFormLayout()
        self.formBox_2.setVerticalSpacing(17)
        self.formBox_2.setFieldGrowthPolicy(QtWidgets.QFormLayout.FieldsStayAtSizeHint)

        # настройка длины пароля
        self.groupBoxLengthPassword = QtWidgets.QGroupBox("Длина пароля (макс 19 символа)")
        self.groupBoxLengthPassword.setFlat(True)
        self.hBoxLength = QtWidgets.QHBoxLayout()

        self.lineEdit_Length = QtWidgets.QLineEdit("10")
        self.lineEdit_Length.setInputMask("b9")
        self.lineEdit_Length.setClearButtonEnabled(True)
        self.lineEdit_Length.textEdited.connect(self.enableApplyButton)  # состояние поля

        self.hBoxLength.addWidget(self.lineEdit_Length)
        self.groupBoxLengthPassword.setLayout(self.hBoxLength)
        self.formBox_2.addWidget(self.groupBoxLengthPassword)


        self.tabWidget_2.setLayout(self.formBox_2)
        self.tabWidget.addTab(self.tabWidget_2, "настройки генерации")

    # методы для датчиков
    def enableApplyButton(self):
        # делает кнопку активной (применить)

        self.button_save.setEnabled(True)



if __name__ == '__main__':
    app = QApplication(sys.argv)
    MainWindow = MainWindow() 
    MainWindow.show()
    sys.exit(app.exec_())

файл options.py:

from PyQt5.QtWidgets import QApplication
from PyQt5.Qt import QSettings
from PyQt5 import QtWidgets
from PyQt5 import QtGui


class LocalizationMainWindow(QtWidgets.QWidget):
    """ класс реализующий локализацию всего интерфейса приложения
        на русский и английский язык """
    
    def __init__(self, parent = None):
        super().__init__(parent)

        self.parent = parent
        self.UserWindowSettings = parent.UserWindowSettings


    def retranslateUi(self):  # метод для перевода на другой язык

        # основное окно, а также меню (MenuBar)
        self.parent.button_1.setText(QApplication.translate('MainWindow', 'Перейти к поиску телефонных\nномеров и электронных почт'))
        self.parent.toolButton_back.setText(QApplication.translate('MainWindow', 'Вернуться назад'))  # на ToolBar
        self.parent.toolButton_run_file.setText(QApplication.translate('MainWindow', 'Открыть файл')) 

        self.parent.menu_options.setTitle(QApplication.translate('MainWindow', 'Опции'))
        self.parent.menu_view.setTitle(QApplication.translate('MainWindow', 'Вид'))
        self.parent.menu_help.setTitle(QApplication.translate('MainWindow', 'Справка'))

        self.parent.sub_menu_options.setTitle(QApplication.translate('MainWindow', 'Настройки'))
        self.parent.clear_page.setText(QApplication.translate('MainWindow', 'Очистка страницы после выхода'))
        self.parent.user_settings.setText(QApplication.translate('MainWindow', 'Пользовательские настройки'))

        # пользовательское окно (настройки класс - UserWindowSettings)
        # ++++++++++
        self.UserWindowSettings.tabWidget.setTabText(QApplication.translate("MainWindow", 0, "настройки поиска"))
        # ++++++++++

        self.UserWindowSettings.button_save.setText(QApplication.translate("MainWindow", "Применить"))
        self.UserWindowSettings.button_ok.setText(QApplication.translate("MainWindow", "Ок"))
        self.UserWindowSettings.button_exit.setText(QApplication.translate("MainWindow", "Отмена"))

        self.UserWindowSettings.groupBoxFormatFile.setTitle(QApplication.translate('MainWindow', "Формат файла для сохранения данных"))

        self.UserWindowSettings.groupBoxRunFile.setTitle(QApplication.translate("MainWindow", "Запуск файла после сохранения"))
        self.UserWindowSettings.radioRunFile_Yes.setText(QApplication.translate("MainWindow", "Да"))
        self.UserWindowSettings.radioRunFile_No.setText(QApplication.translate("MainWindow", "Нет"))

        self.UserWindowSettings.groupBoxPathFile.setTitle(QApplication.translate("MainWindow", "Путь, где будут храниться файлы"))

        self.UserWindowSettings.groupBoxLengthPassword.setTitle(QApplication.translate("MainWindow", "Длина пароля (макс 19 символа)"))

        self.UserWindowSettings.groupBoxRegisterPassword.setTitle(QApplication.translate('MainWindow', "Регистр букв"))
        self.UserWindowSettings.radioRegister_1.setText(QApplication.translate("MainWindow", "Нижний"))
        self.UserWindowSettings.radioRegister_2.setText(QApplication.translate("MainWindow", "Верхний"))
        self.UserWindowSettings.radioRegister_3.setText(QApplication.translate("MainWindow", "Верхний и нижний"))

Ответы (1 шт):

Автор решения: S. Nick

я не могу понять как пороверить ваш код, потому что он не полный, но

void QTabWidget::setTabText(int index, const QString &label)

попробуйте так:

self.UserWindowSettings.tabWidget.setTabText(0, QApplication.translate("MainWindow", "настройки поиска"))
→ Ссылка