Проблема с функцией len(), IndexError: list index out of range

Создаю приложение тренажёр по английскому языку и получаю ошибку:

Traceback (most recent call last):
File "c:\myprograms\projects\eng\menu.py", line 484, in push_3 ui_true.setupUi(MainWindow)
File "c:\myprograms\projects\eng\menu.py", line 438, in setupUi self.retranslateUi(MainWindow)
File "c:\myprograms\projects\eng\menu.py", line 449, in retranslateUi
self.label_2.setText(_translate("MainWindow", f"╧Ёртшы№э√щ юЄтхЄ:{random_list[len(random_list) - 1]},{text}"))
IndexError: list index out of range PS C:\myprograms\projects\eng> & C:/Users/МАТВЕЙ/AppData/Local/Programs/Python/Python312/python.exe c:/myprograms/projects/eng/menu.py
Traceback (most recent call last):
File "c:\myprograms\projects\eng\menu.py", line 484, in push_3 ui_true.setupUi(MainWindow)
File "c:\myprograms\projects\eng\menu.py", line 438, in setupUi self.retranslateUi(MainWindow) File "c:\myprograms\projects\eng\menu.py", line 442, in retranslateUi
if clicked == random_list[len(random_list) - 1]:
~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
IndexError: list index out of range


main.py

from PyQt5 import QtCore, QtGui, QtWidgets
from random import randint, choice

but = 0
was = []
random_list = []
clicked = 0

with open('text.txt', 'r', encoding='utf-8') as f:
    read = f.read()

def text(read):
    read_w = read.split('%')
    for i in range(1,len(read_w)):
        read_w[i] = read_w[i][1:]
    read_w.pop(-1)
    read_d = []
    for i in range(len(read_w)):
        read_d.append(read_w[i].split('#'))

    for i in range(len(read_d)):
        read_d[i].pop(-1)

    read_word = []

    for i in range(len(read_d)):
        read_word.append([])
        for j in range(len(read_d[i])):
            read_word[i].append(read_d[i][j].split('!'))

    for i in range(len(read_word)):
        for j in range(1,len(read_word[i])):
            read_wr_three_wr = read_word[i][j][0][1:]
            read_word[i][j][0] = read_wr_three_wr

    return read_word

def random(read_word,tem,count_num):
    vop = choice(read_word[tem])
    nums = []
    count = 0
    while True:
        con = False
        num = choice(vop)
        if len(num) != 0:
            for num_was in nums:
                if num_was == num:
                    con = True
            
        if count == count_num:
            break

        elif con == False and num != vop[0]:
            count += 1
            nums.append(num)

    true_var = None

    for i in range(len(nums)):
        if nums[i] == vop[1]:
            true_var = i

    if true_var == None:
        true_var = randint(0,len(nums)-1)
        nums[true_var] = vop[1]

    nums.append(vop[0])
    nums.append(true_var)

    return nums


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        MainWindow.setMinimumSize(QtCore.QSize(800, 600))
        MainWindow.setMaximumSize(QtCore.QSize(800, 600))
        MainWindow.setStyleSheet("background-color: #91ffde;")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(90, 30, 631, 111))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold SemiConden")
        font.setPointSize(36)
        font.setBold(True)
        font.setWeight(75)
        self.label.setFont(font)
        self.label.setObjectName("label")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(230, 190, 331, 71))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold Condensed")
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton.setFont(font)
        self.pushButton.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.pushButton.setStyleSheet("QPushButton{\n"
"background-color:#bdff33;\n"
"border: 0px;\n"
"border-radius: 35px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color:#b9fa2e;    \n"
"}\n"
"QPushButton:pressed{\n"
"background-color: #aeef22;\n"
"}")
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(230, 290, 331, 71))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold Condensed")
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_2.setFont(font)
        self.pushButton_2.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.pushButton_2.setStyleSheet("QPushButton{\n"
"background-color:#bdff33;\n"
"border: 0px;\n"
"border-radius: 35px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color:#b9fa2e;    \n"
"}\n"
"QPushButton:pressed{\n"
"background-color: #aeef22;\n"
"}")
        self.pushButton_2.setObjectName("pushButton_2")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label.setText(_translate("MainWindow", "Тренажёр по английскому языку"))
        self.pushButton.setText(_translate("MainWindow", "Начать"))
        self.pushButton_2.setText(_translate("MainWindow", "Настройки"))


class Ui_Tem(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        MainWindow.setMinimumSize(QtCore.QSize(800, 600))
        MainWindow.setMaximumSize(QtCore.QSize(800, 600))
        MainWindow.setStyleSheet("background-color: #91ffde;")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_3.setGeometry(QtCore.QRect(230, 190, 331, 71))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold Condensed")
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_3.setFont(font)
        self.pushButton_3.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.pushButton_3.setStyleSheet("QPushButton{\n"
"background-color:#bdff33;\n"
"border: 0px;\n"
"border-radius: 35px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color:#b9fa2e;    \n"
"}\n"
"QPushButton:pressed{\n"
"background-color: #aeef22;\n"
"}")
        self.pushButton_3.setObjectName("pushButton_3")
        self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_4.setGeometry(QtCore.QRect(230, 280, 331, 71))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold Condensed")
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_4.setFont(font)
        self.pushButton_4.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.pushButton_4.setStyleSheet("QPushButton{\n"
"background-color:#bdff33;\n"
"border: 0px;\n"
"border-radius: 35px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color:#b9fa2e;    \n"
"}\n"
"QPushButton:pressed{\n"
"background-color: #aeef22;\n"
"}")
        self.pushButton_4.setObjectName("pushButton_4")
        self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_5.setGeometry(QtCore.QRect(230, 370, 331, 71))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold Condensed")
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_5.setFont(font)
        self.pushButton_5.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.pushButton_5.setStyleSheet("QPushButton{\n"
"background-color:#bdff33;\n"
"border: 0px;\n"
"border-radius: 35px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color:#b9fa2e;    \n"
"}\n"
"QPushButton:pressed{\n"
"background-color: #aeef22;\n"
"}")
        self.pushButton_5.setObjectName("pushButton_5")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(260, 30, 291, 111))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold SemiConden")
        font.setPointSize(36)
        font.setBold(True)
        font.setWeight(75)
        self.label_2.setFont(font)
        self.label_2.setObjectName("label_2")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton_3.setText(_translate("MainWindow", "Числа"))
        self.pushButton_4.setText(_translate("MainWindow", "Члены семьи"))
        self.pushButton_5.setText(_translate("MainWindow", "Дни недели"))
        self.label_2.setText(_translate("MainWindow", "Выберите тему"))


class Ui_Three(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        MainWindow.setMinimumSize(QtCore.QSize(800, 600))
        MainWindow.setMaximumSize(QtCore.QSize(800, 600))
        MainWindow.setStyleSheet("background-color: #91ffde;")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(40, 20, 701, 141))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold SemiConden")
        font.setPointSize(28)
        font.setBold(True)
        font.setWeight(75)
        self.label_2.setFont(font)
        self.label_2.setObjectName("label_2")
        self.pushButton_0 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_0.setGeometry(QtCore.QRect(440, 340, 331, 71))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold Condensed")
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_0.setFont(font)
        self.pushButton_0.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.pushButton_0.setStyleSheet("QPushButton{\n"
"background-color:#bdff33;\n"
"border: 0px;\n"
"border-radius: 35px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color:#b9fa2e;    \n"
"}\n"
"QPushButton:pressed{\n"
"background-color: #aeef22;\n"
"}")
        self.pushButton_0.setObjectName("pushButton_3")
        self.pushButton_1 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_1.setGeometry(QtCore.QRect(240, 450, 331, 71))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold Condensed")
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_1.setFont(font)
        self.pushButton_1.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.pushButton_1.setStyleSheet("QPushButton{\n"
"background-color:#bdff33;\n"
"border: 0px;\n"
"border-radius: 35px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color:#b9fa2e;    \n"
"}\n"
"QPushButton:pressed{\n"
"background-color: #aeef22;\n"
"}")
        self.pushButton_1.setObjectName("pushButton_4")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(40, 340, 331, 71))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold Condensed")
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_2.setFont(font)
        self.pushButton_2.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.pushButton_2.setStyleSheet("QPushButton{\n"
"background-color:#bdff33;\n"
"border: 0px;\n"
"border-radius: 35px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color:#b9fa2e;    \n"
"}\n"
"QPushButton:pressed{\n"
"background-color: #aeef22;\n"
"}")
        self.pushButton_2.setObjectName("pushButton_5")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        global random_list
        random_list = random(text(read),but-3,3)

        was.append(random_list[len(random_list)-1])
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label_2.setText(_translate("MainWindow", f"Как будет на английском {random_list[len(random_list)-2]}?"))
        self.pushButton_0.setText(_translate("MainWindow", random_list[0]))
        self.pushButton_1.setText(_translate("MainWindow", random_list[1]))
        self.pushButton_2.setText(_translate("MainWindow", random_list[2]))


class Ui_True(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        MainWindow.setMinimumSize(QtCore.QSize(800, 600))
        MainWindow.setMaximumSize(QtCore.QSize(800, 600))
        MainWindow.setStyleSheet("background-color: #91ffde;")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(40, 20, 701, 141))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold SemiConden")
        font.setPointSize(28)
        font.setBold(True)
        font.setWeight(75)
        self.label_2.setFont(font)
        self.label_2.setObjectName("label_2")
        self.pushButton_0 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_0.setGeometry(QtCore.QRect(440, 340, 331, 71))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold Condensed")
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_0.setFont(font)
        self.pushButton_0.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.pushButton_0.setStyleSheet("QPushButton{\n"
"background-color:#ff9c6e;\n"
"border: 0px;\n"
"border-radius: 35px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color:#ff9361;    \n"
"}\n"
"QPushButton:pressed{\n"
"background-color: #fc8954;\n"
"}")
        self.pushButton_0.setObjectName("pushButton_3")
        self.pushButton_1 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_1.setGeometry(QtCore.QRect(240, 450, 331, 71))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold Condensed")
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_1.setFont(font)
        self.pushButton_1.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.pushButton_1.setStyleSheet("QPushButton{\n"
"background-color:#bdff33;\n"
"border: 0px;\n"
"border-radius: 35px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color:#b9fa2e;    \n"
"}\n"
"QPushButton:pressed{\n"
"background-color: #aeef22;\n"
"}")
        self.pushButton_1.setObjectName("pushButton_4")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(40, 340, 331, 71))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold Condensed")
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_2.setFont(font)
        self.pushButton_2.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.pushButton_2.setStyleSheet("QPushButton{\n"
"background-color:#bdff33;\n"
"border: 0px;\n"
"border-radius: 35px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color:#b9fa2e;    \n"
"}\n"
"QPushButton:pressed{\n"
"background-color: #aeef22;\n"
"}")
        self.pushButton_2.setObjectName("pushButton_5")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        if clicked == random_list[len(random_list) - 1]:
            text = 'правильно!'

        else:
            text = 'неправильно.'
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label_2.setText(_translate("MainWindow", f"Правильный ответ:{random_list[len(random_list) - 1]},{text}"))
        self.pushButton_0.setText(_translate("MainWindow", random_list[0]))
        self.pushButton_1.setText(_translate("MainWindow", random_list[1]))
        self.pushButton_2.setText(_translate("MainWindow", random_list[2]))

def push_1():
    ui_tem.setupUi(MainWindow)
    MainWindow.show()
    ui_tem.pushButton_3.clicked.connect(push_3)
    ui_tem.pushButton_4.clicked.connect(push_4)
    ui_tem.pushButton_5.clicked.connect(push_5)

def push_5():
    global but
    but = 5
    ui_three.setupUi(MainWindow)
    MainWindow.show()
    ui_three.pushButton_0.clicked.connect(push_0_b)
    ui_three.pushButton_1.clicked.connect(push_1_b)
    ui_three.pushButton_2.clicked.connect(push_2)


def push_4():
    global but
    but = 4
    ui_three.setupUi(MainWindow)
    MainWindow.show()
    ui_three.pushButton_0.clicked.connect(push_0_b)
    ui_three.pushButton_1.clicked.connect(push_1_b)
    ui_three.pushButton_2.clicked.connect(push_2)


def push_3():
    global but
    but = 3
    ui_true.setupUi(MainWindow)
    MainWindow.show()
    ui_three.pushButton_0.clicked.connect(push_0_b)
    ui_three.pushButton_1.clicked.connect(push_1_b)
    ui_three.pushButton_2.clicked.connect(push_2)


def push_0_b():
    global clicked
    clicked = 0
    ui_true.setupUi(MainWindow)
    MainWindow.show()
    
def push_1_b():
    global clicked
    clicked = 1
    ui_true.setupUi(MainWindow)
    MainWindow.show()

def push_2():
    global clicked
    clicked = 2
    ui_true.setupUi(MainWindow)
    MainWindow.show() 

def push_0():
    global clicked
    clicked = 0
    ui_true.setupUi(MainWindow)
    MainWindow.show()

def push_0():
    global clicked
    clicked = 0


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui_tem = Ui_Tem()
    ui_three = Ui_Three()
    ui_true = Ui_True()
    ui.setupUi(MainWindow)
    MainWindow.show()
    ui.pushButton.clicked.connect(push_1)
    sys.exit(app.exec_())

text.txt

ноль!zero!zir!zer!zera#
один!one!wane!vane!on#%
мама!mother!mom!mam!mazer!mather#
папа!father!dad!fazer!dat#%
понедельник!monday!manday!mondai!montay#
вторник!tuesday!tuestay!tiusday!tuesdai#%

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

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

Не рекомендуется злоупотреблять глобальными переменными, как указано в Почему глобальные переменные - зло?

НИКОГДА НЕ ИЗМЕНЯЙТЕ код, сгенерированный Qt Designer, НИКОГДА.
Создайте другой класс, который наследуется от соответствующего виджета, и используйте созданный класс для его заполнения.

Мне проще было переписать ваш код, чем найти в нем ошибки.
Ваша задача может выглядеть примерно так:

main.py:

from random import randint, choice
from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Three(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        MainWindow.setMinimumSize(QtCore.QSize(800, 600))
        MainWindow.setMaximumSize(QtCore.QSize(800, 600))
        MainWindow.setStyleSheet("background-color: #91ffde;")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(40, 20, 701, 141))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold SemiConden")
        font.setPointSize(22)
        font.setBold(True)
        font.setWeight(75)
        self.label_2.setFont(font)
        self.label_2.setObjectName("label_2")
        self.pushButton_0 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_0.setGeometry(QtCore.QRect(440, 340, 331, 71))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold Condensed")
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_0.setFont(font)
        self.pushButton_0.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.pushButton_0.setStyleSheet("QPushButton{\n"
"background-color:#bdff33;\n"
"border: 0px;\n"
"border-radius: 35px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color:#b9fa2e;    \n"
"}\n"
"QPushButton:pressed{\n"
"background-color: #aeef22;\n"
"}")
        self.pushButton_0.setObjectName("pushButton_3")
        self.pushButton_1 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_1.setGeometry(QtCore.QRect(240, 450, 331, 71))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold Condensed")
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_1.setFont(font)
        self.pushButton_1.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.pushButton_1.setStyleSheet("QPushButton{\n"
"background-color:#bdff33;\n"
"border: 0px;\n"
"border-radius: 35px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color:#b9fa2e;    \n"
"}\n"
"QPushButton:pressed{\n"
"background-color: #aeef22;\n"
"}")
        self.pushButton_1.setObjectName("pushButton_4")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(40, 340, 331, 71))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold Condensed")
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_2.setFont(font)
        self.pushButton_2.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.pushButton_2.setStyleSheet("QPushButton{\n"
"background-color:#bdff33;\n"
"border: 0px;\n"
"border-radius: 35px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color:#b9fa2e;    \n"
"}\n"
"QPushButton:pressed{\n"
"background-color: #aeef22;\n"
"}")
        self.pushButton_2.setObjectName("pushButton_5")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate


class Ui_True(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        MainWindow.setMinimumSize(QtCore.QSize(800, 600))
        MainWindow.setMaximumSize(QtCore.QSize(800, 600))
        MainWindow.setStyleSheet("background-color: #91ffde;")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(40, 20, 701, 141))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold SemiConden")
        font.setPointSize(28)
        font.setBold(True)
        font.setWeight(75)
        self.label_2.setFont(font)
        self.label_2.setObjectName("label_2")
        self.pushButton_0 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_0.setGeometry(QtCore.QRect(440, 340, 331, 71))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold Condensed")
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_0.setFont(font)
        self.pushButton_0.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.pushButton_0.setStyleSheet("QPushButton{\n"
"background-color:#ff9c6e;\n"
"border: 0px;\n"
"border-radius: 35px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color:#ff9361;    \n"
"}\n"
"QPushButton:pressed{\n"
"background-color: #fc8954;\n"
"}")
        self.pushButton_0.setObjectName("pushButton_3")
        self.pushButton_1 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_1.setGeometry(QtCore.QRect(240, 450, 331, 71))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold Condensed")
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_1.setFont(font)
        self.pushButton_1.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.pushButton_1.setStyleSheet("QPushButton{\n"
"background-color:#bdff33;\n"
"border: 0px;\n"
"border-radius: 35px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color:#b9fa2e;    \n"
"}\n"
"QPushButton:pressed{\n"
"background-color: #aeef22;\n"
"}")
        self.pushButton_1.setObjectName("pushButton_4")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(40, 340, 331, 71))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold Condensed")
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_2.setFont(font)
        self.pushButton_2.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.pushButton_2.setStyleSheet("QPushButton{\n"
"background-color:#bdff33;\n"
"border: 0px;\n"
"border-radius: 35px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color:#b9fa2e;    \n"
"}\n"
"QPushButton:pressed{\n"
"background-color: #aeef22;\n"
"}")
        self.pushButton_2.setObjectName("pushButton_5")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))

    
class Ui_Tem(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        MainWindow.setMinimumSize(QtCore.QSize(800, 600))
        MainWindow.setMaximumSize(QtCore.QSize(800, 600))
        MainWindow.setStyleSheet("background-color: #91ffde;")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_3.setGeometry(QtCore.QRect(230, 190, 331, 71))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold Condensed")
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_3.setFont(font)
        self.pushButton_3.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.pushButton_3.setStyleSheet("QPushButton{\n"
"background-color:#bdff33;\n"
"border: 0px;\n"
"border-radius: 35px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color:#b9fa2e;    \n"
"}\n"
"QPushButton:pressed{\n"
"background-color: #aeef22;\n"
"}")
        self.pushButton_3.setObjectName("pushButton_3")
        self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_4.setGeometry(QtCore.QRect(230, 280, 331, 71))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold Condensed")
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_4.setFont(font)
        self.pushButton_4.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.pushButton_4.setStyleSheet("QPushButton{\n"
"background-color:#bdff33;\n"
"border: 0px;\n"
"border-radius: 35px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color:#b9fa2e;    \n"
"}\n"
"QPushButton:pressed{\n"
"background-color: #aeef22;\n"
"}")
        self.pushButton_4.setObjectName("pushButton_4")
        self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_5.setGeometry(QtCore.QRect(230, 370, 331, 71))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold Condensed")
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_5.setFont(font)
        self.pushButton_5.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.pushButton_5.setStyleSheet("QPushButton{\n"
"background-color:#bdff33;\n"
"border: 0px;\n"
"border-radius: 35px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color:#b9fa2e;    \n"
"}\n"
"QPushButton:pressed{\n"
"background-color: #aeef22;\n"
"}")
        self.pushButton_5.setObjectName("pushButton_5")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(260, 30, 291, 111))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold SemiConden")
        font.setPointSize(25)
        font.setBold(True)
        font.setWeight(75)
        self.label_2.setFont(font)
        self.label_2.setObjectName("label_2")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton_3.setText(_translate("MainWindow", "Числа"))
        self.pushButton_4.setText(_translate("MainWindow", "Члены семьи"))
        self.pushButton_5.setText(_translate("MainWindow", "Дни недели"))
        self.label_2.setText(_translate("MainWindow", "Выберите тему"))
    
    
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        MainWindow.setMinimumSize(QtCore.QSize(800, 600))
        MainWindow.setMaximumSize(QtCore.QSize(800, 600))
        MainWindow.setStyleSheet("background-color: #91ffde;")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(90, 30, 631, 111))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold SemiConden")
        font.setPointSize(25)
        font.setBold(True)
        font.setWeight(75)
        self.label.setFont(font)
        self.label.setObjectName("label")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(230, 190, 331, 71))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold Condensed")
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton.setFont(font)
        self.pushButton.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.pushButton.setStyleSheet("QPushButton{\n"
"background-color:#bdff33;\n"
"border: 0px;\n"
"border-radius: 35px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color:#b9fa2e;    \n"
"}\n"
"QPushButton:pressed{\n"
"background-color: #aeef22;\n"
"}")
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(230, 290, 331, 71))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold Condensed")
        font.setPointSize(20)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_2.setFont(font)
        self.pushButton_2.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.pushButton_2.setStyleSheet("QPushButton{\n"
"background-color:#bdff33;\n"
"border: 0px;\n"
"border-radius: 35px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color:#b9fa2e;    \n"
"}\n"
"QPushButton:pressed{\n"
"background-color: #aeef22;\n"
"}")
        self.pushButton_2.setObjectName("pushButton_2")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label.setText(_translate("MainWindow", "Тренажёр по английскому языку"))
        self.pushButton.setText(_translate("MainWindow", "Начать"))
        self.pushButton_2.setText(_translate("MainWindow", "Настройки"))


# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
class ThreeWindow(QtWidgets.QMainWindow, Ui_Three):
    def __init__(self, parent=None):
        super(ThreeWindow, self).__init__(parent) 
        self.setupUi(self)
        self.parent = parent        

    def _random(self, read_word, tem, count_num): 
        vop = choice(read_word[tem])
        nums = []
        count = 0
        while True:
            con = False
            num = choice(vop)
            if len(num) != 0:
                for num_was in nums:
                    if num_was == num:
                        con = True
                
            if count == count_num:
                break

            elif con == False and num != vop[0]:
                count += 1
                nums.append(num)

        true_var = None

        for i in range(len(nums)):
            if nums[i] == vop[1]:
                true_var = i

        if true_var == None:
            true_var = randint(0,len(nums)-1)
            nums[true_var] = vop[1]

        nums.append(vop[0])
        nums.append(true_var)

        return nums  
        

class TrueWindow(QtWidgets.QMainWindow, Ui_True):
    def __init__(self, parent=None):
        super(TrueWindow, self).__init__(parent) 
        self.setupUi(self)
        self.parent = parent


class TemWindow(QtWidgets.QMainWindow, Ui_Tem):
    def __init__(self, parent=None):
        super(TemWindow, self).__init__(parent) 
        self.setupUi(self)
        self.parent = parent
        
        self.pushButton_0 = QtWidgets.QPushButton(self)
        self.pushButton_0.setGeometry(QtCore.QRect(230, 500, 331, 71))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiBold Condensed")
        font.setPointSize(16)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton_0.setFont(font)
        self.pushButton_0.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.pushButton_0.setStyleSheet("QPushButton{\n"
"background-color:#bdff33;\n"
"border: 0px;\n"
"border-radius: 35px;\n"
"}\n"
"QPushButton:hover{\n"
"background-color:#b9fa2e;    \n"
"}\n"
"QPushButton:pressed{\n"
"background-color: #aeef22;\n"
"}")
        self.pushButton_0.setObjectName("pushButton_0")
        self.pushButton_0.setText("Верниться к Настройкам")
        self.pushButton_0.clicked.connect(self.push_start)
        
    def push_start(self):
        self.parent.show()
        self.hide()
        

class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__() 
        self.setupUi(self)
        
        self.but = 0
        self._clicked = 0                                 # _clicked
        self.was = []                                     # ?
        self.random_list = []
        self.read_f = ...                                 # + 
        self.correct_answer = None                        # +
        self.count_num = 3                                # +

        with open('text.txt', 'r', encoding='utf-8') as f:
            self.read_f = f.read()

        self.pushButton.clicked.connect(self.push_1)
        self.pushButton_2.clicked.connect(self.push_settings)

        self.ui_tem = TemWindow(self)                         # Ui_Tem
        self.ui_tem.pushButton_3.clicked.connect(self.push_3)
        self.ui_tem.pushButton_4.clicked.connect(self.push_4)
        self.ui_tem.pushButton_5.clicked.connect(self.push_5)

        self.ui_true = TrueWindow(self)                       # Ui_True()

        self.ui_three = ThreeWindow(self)                     # Ui_Three()
        self.ui_three.pushButton_0.clicked.connect(self.push_0_b)
        self.ui_three.pushButton_1.clicked.connect(self.push_1_b)
        self.ui_three.pushButton_2.clicked.connect(self.push_2) 

    def _text(self, read):
        read_w = read.split('%')
        for i in range(1, len(read_w)):
            read_w[i] = read_w[i][1:]
        read_w.pop(-1)
        read_d = []
        for i in range(len(read_w)):
            read_d.append(read_w[i].split('#'))
        for i in range(len(read_d)):
            read_d[i].pop(-1)
        read_word = []
        for i in range(len(read_d)):
            read_word.append([])
            for j in range(len(read_d[i])):
                read_word[i].append(read_d[i][j].split('!'))
        for i in range(len(read_word)):
            for j in range(1,len(read_word[i])):
                read_wr_three_wr = read_word[i][j][0][1:]
                read_word[i][j][0] = read_wr_three_wr
        return read_word        

    def push_1(self):                                # Начать  
        self.ui_tem.show()
        self.hide()

    def push_settings(self):                         # Настройки
        print(f'"Настройки"') 

    def push_3(self):                                 # числа
#        global but
        self.but = 0      #? 3
        self.read_word_three()

    def push_4(self):                                  # Члены семьи
        self.but = 1      #? 4
        self.read_word_three()

    def push_5(self):                                  # Дни недели
        self.but = 2      #? 5
        self.read_word_three()

    def read_word_three(self):
        read_word = self._text(self.read_f)
        nums = self.ui_three._random(read_word, self.but, self.count_num)
        self.ui_three.label_2.setText(
            f"Как будет на английском {nums[3]}?")
        self.ui_three.pushButton_0.setText(nums[0])
        self.ui_three.pushButton_1.setText(nums[1])
        self.ui_three.pushButton_2.setText(nums[2])
        self.correct_answer = [nums[4], nums[nums[4]]]

        self.ui_three.show()
        self.ui_tem.hide()

    def push_0_b(self):
        self._clicked = 0
        self.push_y_n()
        
    def push_1_b(self):
        self._clicked = 1
        self.push_y_n()

    def push_2(self):
        self._clicked = 2
        self.push_y_n()

    def push_y_n(self):
        bpn = self.sender()
        if self._clicked == self.correct_answer[0]:
            text = ['Правильно!', 'Success']
            bpn.setStyleSheet("""
                QPushButton {
                    background-color: #009c6e;
                    border-radius: 35px;
                }
            """)
        else:
            text = ['Неправильно.', 'Error']
            bpn.setStyleSheet("""
                QPushButton {
                    background-color: #ff9c6e;
                    border-radius: 35px;
                }
            """)
        self.ui_three.label_2.setText(
            f"{self.ui_three.label_2.text()}\n{text[0]}\n"
            f"Правильный ответ: {self.correct_answer[1]} ")

        msg = QtWidgets.QMessageBox.information(
            self, 
            f'{text[1]}', 
            f'{text[0]}'
        )
        bpn.setStyleSheet(
            "QPushButton {background-color: #bdff33; \
                          border-radius: 35px;}")        
        self.ui_tem.show()
        self.ui_three.hide()


    ''' # ???# ???# ???
    def push_0(self):
#        global clicked
        self._clicked = 0
        ui_true.setupUi(MainWindow)
        MainWindow.show()
    '''
    

if __name__ == "__main__":
    import sys
    
    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    

text.txt:

ноль!zero!zir!zer!zera#
один!one!wane!vane!on#
два!two!second!two!to#%
мама!mother!mom!mam!mazer!mather#
папа!father!dad!fazer!dat#%
понедельник!monday!manday!mondai!montay#
вторник!tuesday!tuestay!tiusday!tuesdai#%

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

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

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

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

→ Ссылка