проблема со связыванием двух GUI при нажатии кнопки - PullRequest
1 голос
/ 08 апреля 2020

надеюсь, что вы хороши, поэтому я очень новичок в python и в программировании в целом, поэтому я слежу за учебными пособиями и курсами на YouTube, и для своего первого проекта я хочу создать управление базой данных для своей компании и я использую pyqt5 для GUI, и я хочу создать панель входа в систему, и когда я нажимаю на кнопку входа, появляется новое окно, и для этого я следую учебному пособию, оно работало, когда я пытался с простой пример, но при создании моих GUI он возвращает мне setupUi (), пропустив 1 обязательный позиционный аргумент: 'afterloginwindow', есть код для панели входа в систему:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'nn.ui'
#
# Created by: PyQt5 UI code generator 5.13.2
#
# WARNING! All changes made in this file will be lost!


from PyQt5 import QtCore, QtGui, QtWidgets
from afterlogin import Ui_afterloginwindow

class Ui_login(object):
    def login(self):
        username=self.lineEdit.text()
        password=self.lineEdit_2.text()
        if username=="admin" and password=="admin":
         self.window=QtWidgets.QMainWindow()
         self.ui=Ui_afterloginwindow
         self.ui.setupUi(self.window)
         self.window.show()
        else:
            self.window.hide()




   def setupUi(self, login):
        login.setObjectName("login")
        login.resize(720, 480)
        login.setMinimumSize(QtCore.QSize(720, 480))
        login.setMaximumSize(QtCore.QSize(720, 480))
        login.setStyleSheet("background-color: rgb(255, 255, 255);\n"
"background-color: rgb(255, 85, 0);")
        self.centralwidget = QtWidgets.QWidget(login)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(290, 390, 171, 71))
        self.pushButton.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.pushButton.setObjectName("pushButton")
        self.pushButton.clicked.connect(self.login)
        self.username = QtWidgets.QLabel(self.centralwidget)
        self.username.setGeometry(QtCore.QRect(170, 165, 161, 31))
        self.username.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.username.setObjectName("username")
        self.password = QtWidgets.QLabel(self.centralwidget)
        self.password.setGeometry(QtCore.QRect(170, 225, 171, 41))
        self.password.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.password.setObjectName("password")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(400, 170, 113, 20))
        self.lineEdit.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.lineEdit.setObjectName("lineEdit")
        self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_2.setGeometry(QtCore.QRect(400, 240, 113, 20))
        self.lineEdit_2.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.lineEdit_2.setObjectName("lineEdit_2")
        login.setCentralWidget(self.centralwidget)

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

    def retranslateUi(self, login):
        _translate = QtCore.QCoreApplication.translate
        login.setWindowTitle(_translate("login", "MainWindow"))
        self.pushButton.setText(_translate("login", "login "))
        self.username.setText(_translate("login", "username"))
        self.password.setText(_translate("login", "password "))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    login = QtWidgets.QMainWindow()
    ui = Ui_login()
    ui.setupUi(login)
    login.show()
    sys.exit(app.exec_())

и код для окна, которое я хочу показать:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'afterlogin.ui'
#
# Created by: PyQt5 UI code generator 5.13.2
#
# WARNING! All changes made in this file will be lost!


from PyQt5 import QtCore, QtGui, QtWidgets



class Ui_afterloginwindow(object):


    def setupUi(self, afterloginwindow):
        afterloginwindow.setObjectName("afterloginwindow")
        afterloginwindow.resize(720, 480)
        afterloginwindow.setMinimumSize(QtCore.QSize(720, 480))
        afterloginwindow.setMaximumSize(QtCore.QSize(720, 480))
        afterloginwindow.setStyleSheet("background-color: qlineargradient(spread:pad, x1:0, y1:0, 
x2:1, y2:1, stop:0 rgba(35, 226, 167, 255), stop:1 rgba(255, 255, 255, 255));")
        self.centralwidget = QtWidgets.QWidget(afterloginwindow)
        self.centralwidget.setObjectName("centralwidget")
        self.newclient = QtWidgets.QPushButton(self.centralwidget)
        self.newclient.setGeometry(QtCore.QRect(230, 120, 241, 91))
        font = QtGui.QFont()
        font.setFamily("Rockwell Extra Bold")
        font.setPointSize(16)
        font.setBold(True)
        font.setWeight(75)
        self.newclient.setFont(font)
        self.newclient.setStyleSheet("background-color: qconicalgradient(cx:1, cy:0.875, angle:0, 
stop:0 rgba(255, 124, 0, 255), stop:1 rgba(255, 255, 255, 255));\n"
"background-color: qlineargradient(spread:reflect, x1:0, y1:0, x2:1, y2:1, stop:0.318182 rgba(226, 
198, 94, 255), stop:1 rgba(207, 207, 207, 255));")
        self.newclient.setObjectName("newclient")
        self.renew = QtWidgets.QPushButton(self.centralwidget)
        self.renew.setGeometry(QtCore.QRect(230, 250, 241, 91))
        font = QtGui.QFont()
        font.setFamily("Rockwell Extra Bold")
        font.setPointSize(15)
        font.setBold(True)
        font.setWeight(75)
        self.renew.setFont(font)
        self.renew.setStyleSheet("background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, 
y2:1, stop:0 rgba(146, 237, 241, 255), stop:1 rgba(255, 255, 255, 255));")
        self.renew.setObjectName("renew")
        self.newcard = QtWidgets.QPushButton(self.centralwidget)
        self.newcard.setGeometry(QtCore.QRect(230, 380, 241, 91))
        font = QtGui.QFont()
        font.setFamily("Rockwell Extra Bold")
        font.setPointSize(15)
        font.setBold(True)
        font.setWeight(75)
        self.newcard.setFont(font)
        self.newcard.setStyleSheet("background-color: qconicalgradient(cx:0, cy:0, angle:135, stop:0 
rgba(255, 255, 0, 69), stop:0.375 rgba(255, 255, 0, 69), stop:0.423533 rgba(251, 255, 0, 145), 
 stop:0.45 rgba(247, 255, 0, 208), stop:0.477581 rgba(255, 244, 71, 130), stop:0.518717 rgba(255, 
218, 71, 130), stop:0.55 rgba(255, 255, 0, 255), stop:0.57754 rgba(255, 203, 0, 130), stop:0.625 
rgba(255, 255, 0, 69), stop:1 rgba(255, 255, 0, 69));")
        self.newcard.setObjectName("newcard")
        self.rechercher = QtWidgets.QPushButton(self.centralwidget)
        self.rechercher.setGeometry(QtCore.QRect(230, 10, 241, 81))
        font = QtGui.QFont()
        font.setFamily("Rockwell Extra Bold")
        font.setPointSize(16)
        font.setBold(True)
        font.setWeight(75)
        self.rechercher.setFont(font)
        self.rechercher.setObjectName("rechercher")
        afterloginwindow.setCentralWidget(self.centralwidget)

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

    def retranslateUi(self, afterloginwindow):
        _translate = QtCore.QCoreApplication.translate
        afterloginwindow.setWindowTitle(_translate("afterloginwindow", "MainWindow"))
        self.newclient.setText(_translate("afterloginwindow", "Nouveau Client "))
        self.renew.setText(_translate("afterloginwindow", "Renouvellement "))
        self.newcard.setText(_translate("afterloginwindow", "Nouvelle Carte "))
        self.rechercher.setText(_translate("afterloginwindow", "Rechercher"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    afterloginwindow = QtWidgets.QMainWindow()
    ui = Ui_afterloginwindow()
    ui.setupUi(afterloginwindow)
    afterloginwindow.show()
    sys.exit(app.exec_())

, пожалуйста, помогите мне, ребята!

1 Ответ

0 голосов
/ 08 апреля 2020

Никогда не изменяйте файлы, созданные в Qt Designer!

Создайте два класса, заполните их дизайном и добавьте необходимые логики c.

from PyQt5 import QtCore, QtGui, QtWidgets

#from afterlogin import Ui_afterloginwindow
class Ui_afterloginwindow(object):
    def setupUi(self, afterloginwindow):
        afterloginwindow.setObjectName("afterloginwindow")
        afterloginwindow.resize(720, 480)
        afterloginwindow.setMinimumSize(QtCore.QSize(720, 480))
        afterloginwindow.setMaximumSize(QtCore.QSize(720, 480))
        afterloginwindow.setStyleSheet("background-color: qlineargradient(spread:pad, x1:0, y1:0,\
x2:1, y2:1, stop:0 rgba(35, 226, 167, 255), stop:1 rgba(255, 255, 255, 255));")
        self.centralwidget = QtWidgets.QWidget(afterloginwindow)
        self.centralwidget.setObjectName("centralwidget")
        self.newclient = QtWidgets.QPushButton(self.centralwidget)
        self.newclient.setGeometry(QtCore.QRect(230, 120, 241, 91))
        font = QtGui.QFont()
        font.setFamily("Rockwell Extra Bold")
        font.setPointSize(16)
        font.setBold(True)
        font.setWeight(75)
        self.newclient.setFont(font)
        self.newclient.setStyleSheet("background-color: qconicalgradient(cx:1, cy:0.875, angle:0,\
stop:0 rgba(255, 124, 0, 255), stop:1 rgba(255, 255, 255, 255));\n"
"background-color: qlineargradient(spread:reflect, x1:0, y1:0, x2:1, y2:1, stop:0.318182 rgba(226,\
198, 94, 255), stop:1 rgba(207, 207, 207, 255));")
        self.newclient.setObjectName("newclient")
        self.renew = QtWidgets.QPushButton(self.centralwidget)
        self.renew.setGeometry(QtCore.QRect(230, 250, 241, 91))
        font = QtGui.QFont()
        font.setFamily("Rockwell Extra Bold")
        font.setPointSize(15)
        font.setBold(True)
        font.setWeight(75)
        self.renew.setFont(font)
        self.renew.setStyleSheet("background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1,\
y2:1, stop:0 rgba(146, 237, 241, 255), stop:1 rgba(255, 255, 255, 255));")
        self.renew.setObjectName("renew")
        self.newcard = QtWidgets.QPushButton(self.centralwidget)
        self.newcard.setGeometry(QtCore.QRect(230, 380, 241, 91))
        font = QtGui.QFont()
        font.setFamily("Rockwell Extra Bold")
        font.setPointSize(15)
        font.setBold(True)
        font.setWeight(75)
        self.newcard.setFont(font)
        self.newcard.setStyleSheet("background-color: qconicalgradient(cx:0, cy:0, angle:135, stop:0 \
rgba(255, 255, 0, 69), stop:0.375 rgba(255, 255, 0, 69), stop:0.423533 rgba(251, 255, 0, 145), \
 stop:0.45 rgba(247, 255, 0, 208), stop:0.477581 rgba(255, 244, 71, 130), stop:0.518717 rgba(255, \
218, 71, 130), stop:0.55 rgba(255, 255, 0, 255), stop:0.57754 rgba(255, 203, 0, 130), stop:0.625 \
rgba(255, 255, 0, 69), stop:1 rgba(255, 255, 0, 69));")
        self.newcard.setObjectName("newcard")
        self.rechercher = QtWidgets.QPushButton(self.centralwidget)
        self.rechercher.setGeometry(QtCore.QRect(230, 10, 241, 81))
        font = QtGui.QFont()
        font.setFamily("Rockwell Extra Bold")
        font.setPointSize(16)
        font.setBold(True)
        font.setWeight(75)
        self.rechercher.setFont(font)
        self.rechercher.setObjectName("rechercher")
        afterloginwindow.setCentralWidget(self.centralwidget)

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

    def retranslateUi(self, afterloginwindow):
        _translate = QtCore.QCoreApplication.translate
        afterloginwindow.setWindowTitle(_translate("afterloginwindow", "MainWindow"))
        self.newclient.setText(_translate("afterloginwindow", "Nouveau Client "))
        self.renew.setText(_translate("afterloginwindow", "Renouvellement "))
        self.newcard.setText(_translate("afterloginwindow", "Nouvelle Carte "))
        self.rechercher.setText(_translate("afterloginwindow", "Rechercher"))


class Ui_login(object):
    def setupUi(self, login):
        login.setObjectName("login")
        login.resize(720, 480)
        login.setMinimumSize(QtCore.QSize(720, 480))
        login.setMaximumSize(QtCore.QSize(720, 480))
        login.setStyleSheet("background-color: rgb(255, 255, 255);\n"
"background-color: rgb(255, 85, 0);")
        self.centralwidget = QtWidgets.QWidget(login)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(290, 390, 171, 71))
        self.pushButton.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.pushButton.setObjectName("pushButton")
        self.pushButton.clicked.connect(self.login)
        self.username = QtWidgets.QLabel(self.centralwidget)
        self.username.setGeometry(QtCore.QRect(170, 165, 161, 31))
        self.username.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.username.setObjectName("username")
        self.password = QtWidgets.QLabel(self.centralwidget)
        self.password.setGeometry(QtCore.QRect(170, 225, 171, 41))
        self.password.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.password.setObjectName("password")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(400, 170, 113, 20))
        self.lineEdit.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.lineEdit.setObjectName("lineEdit")
        self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_2.setGeometry(QtCore.QRect(400, 240, 113, 20))
        self.lineEdit_2.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.lineEdit_2.setObjectName("lineEdit_2")
        login.setCentralWidget(self.centralwidget)

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

    def retranslateUi(self, login):
        _translate = QtCore.QCoreApplication.translate
        login.setWindowTitle(_translate("login", "MainWindow"))
        self.pushButton.setText(_translate("login", "login "))
        self.username.setText(_translate("login", "username"))
        self.password.setText(_translate("login", "password "))


class AfterLoginWindow(QtWidgets.QMainWindow, Ui_afterloginwindow):
    def __init__(self):
        super().__init__()

        self.setupUi(self)


class MyWin(QtWidgets.QMainWindow, Ui_login):
    def __init__(self):
        super().__init__()

        self.setupUi(self)

    def login(self):
        username = self.lineEdit.text()
        password = self.lineEdit_2.text()
        if username == "admin" and password == "admin":
            self.window = AfterLoginWindow()
            self.window.show()
            self.hide()
        else:
            msg = QtWidgets.QMessageBox.information(None, 'Error', 'Something went wrong, try again.')


if __name__=="__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    myapp = MyWin()
    myapp.show()
    sys.exit(app.exec_())

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...