Нажимаю кнопку и выдает: Возникло исключение: NameError name 'pushButtonPrevui' is not defined
Собственно начал делать проект на библиотеке PyQt5. Проект-опросник.
В коде возникло исключение:
NameError name 'pushButtonPrevui' is not defined
Код разделен на два файла на Ui_Pyhton.py и main.py приведу ниже:
main.py
from PyQt5 import QtCore, QtGui, QtWidgets
from Ui_Pyhton import Ui_test
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_test()
ui.setupUi(MainWindow)
MainWindow.show()
def HidePrevui():
pushButtonPrevui.hide()
labelPreviue.hide()
pushButtonAnswer1.show()
pushButtonAnswer1_2.show()
pushButtonAnswer1_3.show()
pushButtonAnswer1_4.show()
label_Answer.show()
label.show()
pushButtonPrevui.onpressed.connect(HidePrevui)
sys.exit(app.exec_())
Ui_Pyhton.py
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_test(object):
def setupUi(self, test):
test.setObjectName("test")
test.resize(392, 358)
font = QtGui.QFont()
font.setFamily("Arial Black")
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
test.setFont(font)
test.setStyleSheet("background-color: rgb(97, 99, 107);")
self.centralwidget = QtWidgets.QWidget(test)
self.centralwidget.setObjectName("centralwidget")
#начальный экран
self.pushButtonPrevui = QtWidgets.QPushButton(self.centralwidget)
self.pushButtonPrevui.setGeometry(QtCore.QRect(130, 110, 111, 51))
self.pushButtonPrevui.setStyleSheet("background-color: none;\n"
"")
self.pushButtonPrevui.setObjectName("pushButtonPrevui")
self.labelPreviue = QtWidgets.QLabel(self.centralwidget)
self.labelPreviue.setGeometry(QtCore.QRect(90, 70, 181, 31))
font = QtGui.QFont()
font.setFamily("Impact")
font.setPointSize(14)
self.labelPreviue.setFont(font)
self.labelPreviue.setStyleSheet("color: rgb(255, 255, 255);")
self.labelPreviue.setObjectName("labelPreviue")
#Вопрос
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(50, 110, 171, 31))
font = QtGui.QFont()
font.setFamily("Arial Black")
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.label.setFont(font)
self.label.setStyleSheet("color: rgb(255, 255, 255);\n"
"background-color: none;")
self.label.setObjectName("label")
self.label.hide()
#кнопка ответа1
self.pushButtonAnswer1 = QtWidgets.QPushButton(self.centralwidget)
self.pushButtonAnswer1.setGeometry(QtCore.QRect(50, 200, 31, 31))
self.pushButtonAnswer1.setStyleSheet("background-color: #ffffff;\n"
"border: 2px solid #ffffff;\n"
"")
self.pushButtonAnswer1.setObjectName("pushButtonAnswer1")
self.pushButtonAnswer1.hide()
#кнопка ответа 2
self.pushButtonAnswer1_2 = QtWidgets.QPushButton(self.centralwidget)
self.pushButtonAnswer1_2.setGeometry(QtCore.QRect(90, 200, 31, 31))
self.pushButtonAnswer1_2.setStyleSheet("background-color: #ffffff;\n"
"border: 2px solid #ffffff;\n"
"")
self.pushButtonAnswer1_2.setObjectName("pushButtonAnswer1_2")
self.pushButtonAnswer1_2.hide()
#кнопка ответа 3
self.pushButtonAnswer1_3 = QtWidgets.QPushButton(self.centralwidget)
self.pushButtonAnswer1_3.setGeometry(QtCore.QRect(130, 200, 31, 31))
self.pushButtonAnswer1_3.setStyleSheet("background-color: #ffffff;\n"
"border: 2px solid #ffffff;\n"
"")
self.pushButtonAnswer1_3.setObjectName("pushButtonAnswer1_3")
self.pushButtonAnswer1_3.hide()
#кнопка ответа 4
self.pushButtonAnswer1_4 = QtWidgets.QPushButton(self.centralwidget)
self.pushButtonAnswer1_4.setGeometry(QtCore.QRect(170, 200, 31, 31))
self.pushButtonAnswer1_4.setStyleSheet("background-color: #ffffff;\n"
"border: 2px solid #ffffff;\n"
"")
self.pushButtonAnswer1_4.setObjectName("pushButtonAnswer1_4")
self.pushButtonAnswer1_4.hide()
#варианты ответа
self.label_Answer = QtWidgets.QLabel(self.centralwidget)
self.label_Answer.setGeometry(QtCore.QRect(40, 250, 91, 31))
self.label_Answer.setStyleSheet("background-color: none;\n"
"color: rgb(255, 255, 255);")
self.label_Answer.setObjectName("label_Answer")
self.label_Answer.hide()
test.setCentralWidget(self.centralwidget)
self.retranslateUi(test)
QtCore.QMetaObject.connectSlotsByName(test)
def retranslateUi(self, test):
_translate = QtCore.QCoreApplication.translate
test.setWindowTitle(_translate("test", "Тест по Информатике"))#название в панеле приложения
self.pushButtonPrevui.setText(_translate("test", "Начать"))#начать
self.labelPreviue.setText(_translate("test", "Тест по Информатике"))#название в программе
self.label.setText(_translate("test", "Вопрос:"))#вопрос
self.pushButtonAnswer1.setText(_translate("test", "a"))#вариант а
self.pushButtonAnswer1_2.setText(_translate("test", "b"))#вариант б
self.pushButtonAnswer1_3.setText(_translate("test", "c"))#вариант с
self.pushButtonAnswer1_4.setText(_translate("test", "d"))#вариант д
self.label_Answer.setText(_translate("test", "Варианты ответа:"))#варианты ответов
Ошибка в main.py в строке:
pushButtonPrevui.onpressed.connect(HidePrevui)
Кто поможет буду благодарен!!
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Вы исправите ошибку, если добавите ui. :
...
def HidePrevui():
# pushButtonPrevui.hide()
# ->vv<----------------------------------------------------------------
ui.pushButtonPrevui.hide()
ui.labelPreviue.hide()
ui.pushButtonAnswer1.show()
ui.pushButtonAnswer1_2.show()
ui.pushButtonAnswer1_3.show()
ui.pushButtonAnswer1_4.show()
ui.label_Answer.show()
ui.label.show()
#pushButtonPrevui.onpressed.connect(HidePrevui)
#vv <-------------------------------------------------------------------
ui.pushButtonPrevui.clicked.connect(HidePrevui)
sys.exit(app.exec_())
Но правильно будет так:
Создайте другой класс, который наследуется от соответствующего виджета, и используйте созданный класс для его заполнения.
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
#from Ui_Pyhton import Ui_test
class Ui_test(object):
def setupUi(self, test):
test.setObjectName("test")
test.resize(392, 358)
font = QtGui.QFont()
font.setFamily("Arial Black")
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
test.setFont(font)
test.setStyleSheet("background-color: rgb(97, 99, 107);")
self.centralwidget = QtWidgets.QWidget(test)
self.centralwidget.setObjectName("centralwidget")
#начальный экран
self.pushButtonPrevui = QtWidgets.QPushButton(self.centralwidget)
self.pushButtonPrevui.setGeometry(QtCore.QRect(130, 110, 111, 51))
self.pushButtonPrevui.setStyleSheet("background-color: none;\n"
"")
self.pushButtonPrevui.setObjectName("pushButtonPrevui")
self.labelPreviue = QtWidgets.QLabel(self.centralwidget)
self.labelPreviue.setGeometry(QtCore.QRect(90, 70, 181, 31))
font = QtGui.QFont()
font.setFamily("Impact")
font.setPointSize(14)
self.labelPreviue.setFont(font)
self.labelPreviue.setStyleSheet("color: rgb(255, 255, 255);")
self.labelPreviue.setObjectName("labelPreviue")
#Вопрос
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(50, 110, 171, 31))
font = QtGui.QFont()
font.setFamily("Arial Black")
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.label.setFont(font)
self.label.setStyleSheet("color: rgb(255, 255, 255);\n"
"background-color: none;")
self.label.setObjectName("label")
self.label.hide()
#кнопка ответа1
self.pushButtonAnswer1 = QtWidgets.QPushButton(self.centralwidget)
self.pushButtonAnswer1.setGeometry(QtCore.QRect(50, 200, 31, 31))
self.pushButtonAnswer1.setStyleSheet("background-color: #ffffff;\n"
"border: 2px solid #ffffff;\n"
"")
self.pushButtonAnswer1.setObjectName("pushButtonAnswer1")
self.pushButtonAnswer1.hide()
#кнопка ответа 2
self.pushButtonAnswer1_2 = QtWidgets.QPushButton(self.centralwidget)
self.pushButtonAnswer1_2.setGeometry(QtCore.QRect(90, 200, 31, 31))
self.pushButtonAnswer1_2.setStyleSheet("background-color: #ffffff;\n"
"border: 2px solid #ffffff;\n"
"")
self.pushButtonAnswer1_2.setObjectName("pushButtonAnswer1_2")
self.pushButtonAnswer1_2.hide()
#кнопка ответа 3
self.pushButtonAnswer1_3 = QtWidgets.QPushButton(self.centralwidget)
self.pushButtonAnswer1_3.setGeometry(QtCore.QRect(130, 200, 31, 31))
self.pushButtonAnswer1_3.setStyleSheet("background-color: #ffffff;\n"
"border: 2px solid #ffffff;\n"
"")
self.pushButtonAnswer1_3.setObjectName("pushButtonAnswer1_3")
self.pushButtonAnswer1_3.hide()
#кнопка ответа 4
self.pushButtonAnswer1_4 = QtWidgets.QPushButton(self.centralwidget)
self.pushButtonAnswer1_4.setGeometry(QtCore.QRect(170, 200, 31, 31))
self.pushButtonAnswer1_4.setStyleSheet("background-color: #ffffff;\n"
"border: 2px solid #ffffff;\n"
"")
self.pushButtonAnswer1_4.setObjectName("pushButtonAnswer1_4")
self.pushButtonAnswer1_4.hide()
#варианты ответа
self.label_Answer = QtWidgets.QLabel(self.centralwidget)
self.label_Answer.setGeometry(QtCore.QRect(40, 250, 91, 31))
self.label_Answer.setStyleSheet("background-color: none;\n"
"color: rgb(255, 255, 255);")
self.label_Answer.setObjectName("label_Answer")
self.label_Answer.hide()
test.setCentralWidget(self.centralwidget)
self.retranslateUi(test)
QtCore.QMetaObject.connectSlotsByName(test)
def retranslateUi(self, test):
_translate = QtCore.QCoreApplication.translate
test.setWindowTitle(_translate("test", "Тест по Информатике"))#название в панеле приложения
self.pushButtonPrevui.setText(_translate("test", "Начать"))#начать
self.labelPreviue.setText(_translate("test", "Тест по Информатике"))#название в программе
self.label.setText(_translate("test", "Вопрос:"))#вопрос
self.pushButtonAnswer1.setText(_translate("test", "a")) #вариант а
self.pushButtonAnswer1_2.setText(_translate("test", "b"))#вариант б
self.pushButtonAnswer1_3.setText(_translate("test", "c"))#вариант с
self.pushButtonAnswer1_4.setText(_translate("test", "d"))#вариант д
self.label_Answer.setText(_translate("test", "Варианты ответа:"))#варианты ответов
class MainWindow(QtWidgets.QMainWindow, Ui_test):
def __init__(self):
super().__init__()
self.setupUi(self)
self.pushButtonPrevui.clicked.connect(self.hide_prevui)
def hide_prevui(self):
self.pushButtonPrevui.hide()
self.labelPreviue.hide()
self.pushButtonAnswer1.show()
self.pushButtonAnswer1_2.show()
self.pushButtonAnswer1_3.show()
self.pushButtonAnswer1_4.show()
self.label_Answer.show()
self.label.show()
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec())


