Search code examples
pythonpyqtpyqt5qt-designer

Opening Second Form from First in Pyqt5


I'm new to Qt and learning.

I have created two forms using Qt Designer. I want to open the second form from first on button click event. I have done this it is not working.

import LoginForm
import SignUpForm
import sys
from PyQt5 import QtCore, QtGui, QtWidgets

def OnSignup():
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = SignUpForm.Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    #sys.exit(app.exec_())


app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = LoginForm.Ui_LoginForm()
ui.setupUi(MainWindow)

ui.Signup.clicked.connect(OnSignup)

MainWindow.show()
sys.exit(app.exec_())

sys.exit(app.exec_())

without this line first form open but second form not shown on clicking the button.

with this line, this error generated. QCoreApplication::exec: The event loop is already running

Plz Help


Solution

  • import LoginForm
    import SignUpForm
    import sys
    from PyQt5 import QtCore, QtGui, QtWidgets
    
    window2 = None
    def OnSignup():
        global window2
        if window2 is None:
            window2 = QtWidgets.QMainWindow()
            ui = SignUpForm.Ui_MainWindow()
            ui.setupUi(window2)
        window2.show()
    
    
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = LoginForm.Ui_LoginForm()
    ui.setupUi(MainWindow)
    
    ui.Signup.clicked.connect(OnSignup)
    
    MainWindow.show()
    app.exec_()