【问题标题】:Opening Second Form from First in Pyqt5在 Pyqt5 中从第一个表单打开第二个表单
【发布时间】:2018-12-08 07:56:50
【问题描述】:

我是 Qt 和学习新手。

我使用 Qt Designer 创建了两个表单。我想在按钮单击事件上从第一个表单打开第二个表单。我已经这样做了,它不起作用。

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_())

没有这一行,第一个表单打开,但第二个表单在单击按钮时不显示。

使用此行,生成此错误。 QCoreApplication::exec: 事件循环已经在运行

请帮忙

【问题讨论】:

    标签: python pyqt pyqt5 qt-designer


    【解决方案1】:
    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_()
    

    【讨论】:

    • def OnSignup(): #app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = SignUpForm.Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() #sys.exit(app.exec_())
    • OnSignup函数中不需要app变量
    • def OnSignup(): MainWindow = QtWidgets.QMainWindow() ui = SignUpForm.Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() 点击按钮没有响应
    • 此代码运行良好window2 = None def OnSignup(): global window2 if window2 == None: window2 = QtWidgets.QMainWindow() ui = SignUpForm.Ui_MainWindow() ui.setupUi(window2) window2.show()
    • 我认为global window2 = QtWidgets.QMainWindow() 行有错误,它必须在两行global window2 window2 = QtWidgets.QMainWind ow() 谢谢....:)
    猜你喜欢
    • 1970-01-01
    • 2022-01-09
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多