Нажимаю кнопку и выдает: Возникло исключение: 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())

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

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

→ Ссылка