Проблема с функцией 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 шт):
Не рекомендуется злоупотреблять глобальными переменными, как указано в Почему глобальные переменные - зло?
НИКОГДА НЕ ИЗМЕНЯЙТЕ код, сгенерированный 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#%



