Исправить ошибку NameError: name 'Main' is not defined
Подскажите где ошибка в коде. При изменении класса MyOpen на Main выдает ошибку
'Main' object has no attribute 'setModal'
и указывает на строку Open.setModal(False)
from PyQt5 import QtCore, QtGui, QtWidgets
from nas_ser import Ui_nas_ser
class Ui_Open(object):
def setupUi(self, Open):
Open.setObjectName("Open")
Open.resize(320, 240)
Open.setMaximumSize(QtCore.QSize(320, 240))
Open.setWindowFilePath("")
Open.setModal(False)
self.lineEdit = QtWidgets.QLineEdit(Open)
self.lineEdit.setGeometry(QtCore.QRect(130, 100, 180, 25))
self.lineEdit.setMaxLength(10)
self.lineEdit.setEchoMode(QtWidgets.QLineEdit.Password)
self.lineEdit.setObjectName("lineEdit")
self.comboBox_vx = QtWidgets.QComboBox(Open)
self.comboBox_vx.setGeometry(QtCore.QRect(130, 60, 180, 25))
self.comboBox_vx.setObjectName("comboBox_vx")
self.comboBox_vx.addItem("")
self.comboBox_vx.addItem("")
self.label = QtWidgets.QLabel(Open)
self.label.setGeometry(QtCore.QRect(20, 60, 100, 25))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.label.setFont(font)
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(Open)
self.label_2.setGeometry(QtCore.QRect(20, 100, 60, 25))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.label_2.setFont(font)
self.label_2.setObjectName("label_2")
self.checkBox_ = QtWidgets.QCheckBox(Open)
self.checkBox_.setEnabled(True)
self.checkBox_.setGeometry(QtCore.QRect(20, 150, 231, 17))
self.checkBox_.setLayoutDirection(QtCore.Qt.RightToLeft)
self.checkBox_.setAutoFillBackground(False)
self.checkBox_.setObjectName("checkBox_")
self.label_3 = QtWidgets.QLabel(Open)
self.label_3.setGeometry(QtCore.QRect(20, 10, 280, 20))
font = QtGui.QFont()
font.setPointSize(11)
font.setBold(False)
font.setItalic(False)
font.setWeight(50)
font.setKerning(True)
self.label_3.setFont(font)
self.label_3.setLayoutDirection(QtCore.Qt.LeftToRight)
self.label_3.setTextFormat(QtCore.Qt.AutoText)
self.label_3.setAlignment(QtCore.Qt.AlignCenter)
self.label_3.setObjectName("label_3")
self.pushButton = QtWidgets.QPushButton(Open)
self.pushButton.setGeometry(QtCore.QRect(160, 200, 75, 25))
self.pushButton.setObjectName("pushButton")
self.pushButton_2 = QtWidgets.QPushButton(Open)
self.pushButton_2.setGeometry(QtCore.QRect(240, 200, 75, 25))
self.pushButton_2.setObjectName("pushButton_2")
self.toolButton = QtWidgets.QToolButton(Open)
self.toolButton.setGeometry(QtCore.QRect(30, 200, 110, 25))
self.toolButton.setObjectName("toolButton")
self.retranslateUi(Open)
QtCore.QMetaObject.connectSlotsByName(Open)
def retranslateUi(self, Open):
_translate = QtCore.QCoreApplication.translate
Open.setWindowTitle(_translate("Open", "Учет кабельных линий связи - Вход"))
self.comboBox_vx.setItemText(0, _translate("Open", "Администратор"))
self.comboBox_vx.setItemText(1, _translate("Open", "Оператор"))
self.label.setText(_translate("Open", "Пользователь:"))
self.label_2.setText(_translate("Open", "Пароль:"))
self.checkBox_.setText(_translate("Open", "Гость - авторизации не требуется"))
self.label_3.setText(_translate("Open", "Авторизация пользователя"))
self.pushButton.setText(_translate("Open", "Войти"))
self.pushButton_2.setText(_translate("Open", "Отмена"))
self.toolButton.setText(_translate("Open", "Параметры"))
class MyOpen(QtWidgets.QWidget, Ui_Open):
def __init__(self, parent=None):
super(Main, self).__init__(parent)
self.setupUi(self)
self.toolButton.clicked.connect(self.onClicked)
def onClicked(self):
self.nast = MyNast()
self.nast.show()
class MyNast(QtWidgets.QWidget, Ui_nas_ser):
def __init__(self, parent=None):
super(MyNast, self).__init__(parent)
self.setupUi(self)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
#Open = QtWidgets.QDialog()
#ui = Ui_Open()
#ui.setupUi(Open)
#Open.show()
w = Main()
w = show()
sys.exit(app.exec_())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Я же вам написал - Если вас будет интересовать что-то еще - опубликуйте модуль nas_ser.py
Ваша проблема в том, что при создании формы в Qt Designer вы использовали класс QDialog, а при создании главного окна вы почему-то наследуетесь от QWidget - это не правильно.
from PyQt5 import QtCore, QtGui, QtWidgets
#from nas_ser import Ui_nas_ser
class Ui_Open(object):
def setupUi(self, Open):
Open.setObjectName("Open")
Open.resize(320, 240)
Open.setMaximumSize(QtCore.QSize(320, 240))
Open.setWindowFilePath("")
Open.setModal(False)
self.lineEdit = QtWidgets.QLineEdit(Open)
self.lineEdit.setGeometry(QtCore.QRect(130, 100, 180, 25))
self.lineEdit.setMaxLength(10)
self.lineEdit.setEchoMode(QtWidgets.QLineEdit.Password)
self.lineEdit.setObjectName("lineEdit")
self.comboBox_vx = QtWidgets.QComboBox(Open)
self.comboBox_vx.setGeometry(QtCore.QRect(130, 60, 180, 25))
self.comboBox_vx.setObjectName("comboBox_vx")
self.comboBox_vx.addItem("")
self.comboBox_vx.addItem("")
self.label = QtWidgets.QLabel(Open)
self.label.setGeometry(QtCore.QRect(20, 60, 100, 25))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.label.setFont(font)
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(Open)
self.label_2.setGeometry(QtCore.QRect(20, 100, 60, 25))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.label_2.setFont(font)
self.label_2.setObjectName("label_2")
self.checkBox_ = QtWidgets.QCheckBox(Open)
self.checkBox_.setEnabled(True)
self.checkBox_.setGeometry(QtCore.QRect(20, 150, 231, 17))
self.checkBox_.setLayoutDirection(QtCore.Qt.RightToLeft)
self.checkBox_.setAutoFillBackground(False)
self.checkBox_.setObjectName("checkBox_")
self.label_3 = QtWidgets.QLabel(Open)
self.label_3.setGeometry(QtCore.QRect(20, 10, 280, 20))
font = QtGui.QFont()
font.setPointSize(11)
font.setBold(False)
font.setItalic(False)
font.setWeight(50)
font.setKerning(True)
self.label_3.setFont(font)
self.label_3.setLayoutDirection(QtCore.Qt.LeftToRight)
self.label_3.setTextFormat(QtCore.Qt.AutoText)
self.label_3.setAlignment(QtCore.Qt.AlignCenter)
self.label_3.setObjectName("label_3")
self.pushButton = QtWidgets.QPushButton(Open)
self.pushButton.setGeometry(QtCore.QRect(160, 200, 75, 25))
self.pushButton.setObjectName("pushButton")
self.pushButton_2 = QtWidgets.QPushButton(Open)
self.pushButton_2.setGeometry(QtCore.QRect(240, 200, 75, 25))
self.pushButton_2.setObjectName("pushButton_2")
self.toolButton = QtWidgets.QToolButton(Open)
self.toolButton.setGeometry(QtCore.QRect(30, 200, 110, 25))
self.toolButton.setObjectName("toolButton")
self.retranslateUi(Open)
QtCore.QMetaObject.connectSlotsByName(Open)
def retranslateUi(self, Open):
_translate = QtCore.QCoreApplication.translate
Open.setWindowTitle(_translate("Open", "Учет кабельных линий связи - Вход"))
self.comboBox_vx.setItemText(0, _translate("Open", "Администратор"))
self.comboBox_vx.setItemText(1, _translate("Open", "Оператор"))
self.label.setText(_translate("Open", "Пользователь:"))
self.label_2.setText(_translate("Open", "Пароль:"))
self.checkBox_.setText(_translate("Open", "Гость - авторизации не требуется"))
self.label_3.setText(_translate("Open", "Авторизация пользователя"))
self.pushButton.setText(_translate("Open", "Войти"))
self.pushButton_2.setText(_translate("Open", "Отмена"))
self.toolButton.setText(_translate("Open", "Параметры"))
#class MyOpen(QtWidgets.QWidget, Ui_Open):
class Main(QtWidgets.QDialog, Ui_Open): # QDialog
def __init__(self, parent=None):
super(Main, self).__init__(parent)
self.setupUi(self)
self.toolButton.clicked.connect(self.onClicked)
def onClicked(self):
self.nast = MyNast()
self.nast.show()
class MyNast(QtWidgets.QWidget): #, Ui_nas_ser):
def __init__(self, parent=None):
super(MyNast, self).__init__(parent)
# self.setupUi(self)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
w = Main()
# w = show()
w.show() # w.show()
sys.exit(app.exec_())
