yuyeze 2022-09-24 22:43 采纳率: 76.2%
浏览 841
已结题

pyqt5:QCoreApplication::exec: The event loop is already running

现在有一个注册登录的程序:
主程序:

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

# Form implementation generated from reading ui file 'D:\Desktop\login.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets
import sys
from PyQt5.QtWidgets import QApplication
import register_progress

class login(QtWidgets.QMainWindow):
    def __init__(self):
        QtWidgets.QMainWindow.__init__(self)
        self.setupUi(self)
        self.retranslateUi(self)

    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 295)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
        self.tabWidget.setGeometry(QtCore.QRect(0, 0, 791, 271))
        self.tabWidget.setObjectName("tabWidget")
        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        self.label_username = QtWidgets.QLabel(self.tab)
        self.label_username.setGeometry(QtCore.QRect(10, 40, 51, 16))
        self.label_username.setObjectName("label_username")
        self.label_password = QtWidgets.QLabel(self.tab)
        self.label_password.setGeometry(QtCore.QRect(10, 80, 61, 16))
        self.label_password.setObjectName("label_password")
        self.label_phone = QtWidgets.QLabel(self.tab)
        self.label_phone.setGeometry(QtCore.QRect(10, 120, 51, 16))
        self.label_phone.setObjectName("label_phone")
        self.label_Email = QtWidgets.QLabel(self.tab)
        self.label_Email.setGeometry(QtCore.QRect(10, 150, 31, 16))
        self.label_Email.setObjectName("label_Email")
        self.label_root_password = QtWidgets.QLabel(self.tab)
        self.label_root_password.setGeometry(QtCore.QRect(10, 210, 61, 21))
        self.label_root_password.setObjectName("label_root_password")

        self.lineEdit_username = QtWidgets.QLineEdit(self.tab)
        self.lineEdit_username.setGeometry(QtCore.QRect(150, 40, 113, 21))
        self.lineEdit_username.setObjectName("lineEdit_username")
        self.label_W_Q = QtWidgets.QLabel(self.tab)
        self.label_W_Q.setGeometry(QtCore.QRect(10, 180, 81, 16))
        self.label_W_Q.setObjectName("label_W_Q")
        self.lineEdit_password = QtWidgets.QLineEdit(self.tab)
        self.lineEdit_password.setGeometry(QtCore.QRect(150, 80, 113, 21))
        self.lineEdit_password.setObjectName("lineEdit_password")
        self.lineEdit_Email = QtWidgets.QLineEdit(self.tab)
        self.lineEdit_Email.setGeometry(QtCore.QRect(150, 150, 113, 21))
        self.lineEdit_Email.setObjectName("lineEdit_Email")
        self.lineEdit_phone = QtWidgets.QLineEdit(self.tab)
        self.lineEdit_phone.setGeometry(QtCore.QRect(150, 120, 113, 21))
        self.lineEdit_phone.setObjectName("lineEdit_phone")
        self.lineEdit_root_password = QtWidgets.QLineEdit(self.tab)
        self.lineEdit_root_password.setGeometry(QtCore.QRect(150, 220, 113, 21))
        self.lineEdit_root_password.setObjectName("lineEdit_root_password")
        self.lineEdit_W_Q = QtWidgets.QLineEdit(self.tab)
        self.lineEdit_W_Q.setGeometry(QtCore.QRect(150, 180, 113, 21))
        self.lineEdit_W_Q.setObjectName("lineEdit_W_Q")

        self.label_name = QtWidgets.QLabel(self.tab)
        self.label_name.setGeometry(QtCore.QRect(300, 50, 31, 16))
        self.label_name.setObjectName("label_name")
        self.lineEdit_name = QtWidgets.QLineEdit(self.tab)
        self.lineEdit_name.setGeometry(QtCore.QRect(350, 50, 113, 21))
        self.lineEdit_name.setObjectName("lineEdit_name")
        self.label_signature = QtWidgets.QLabel(self.tab)
        self.label_signature.setGeometry(QtCore.QRect(300, 90, 72, 15))
        self.label_signature.setObjectName("label_signature")
        self.lineEdit_signature = QtWidgets.QLineEdit(self.tab)
        self.lineEdit_signature.setGeometry(QtCore.QRect(300, 120, 341, 121))
        self.lineEdit_signature.setObjectName("lineEdit_signature")
        self.pushButton_register = QtWidgets.QPushButton(self.tab)
        self.pushButton_register.setGeometry(QtCore.QRect(670, 100, 93, 28))
        self.pushButton_register.setObjectName("pushButton_register")
        self.tabWidget.addTab(self.tab, "")
        self.tab_2 = QtWidgets.QWidget()
        self.tab_2.setObjectName("tab_2")
        self.label_user_name = QtWidgets.QLabel(self.tab_2)
        self.label_user_name.setGeometry(QtCore.QRect(340, 20, 51, 16))
        self.label_user_name.setObjectName("label_user_name")
        self.lineEdit_9 = QtWidgets.QLineEdit(self.tab_2)
        self.lineEdit_9.setGeometry(QtCore.QRect(310, 60, 113, 21))
        self.lineEdit_9.setObjectName("lineEdit_9")
        self.label_password_2 = QtWidgets.QLabel(self.tab_2)
        self.label_password_2.setGeometry(QtCore.QRect(350, 100, 31, 16))
        self.label_password_2.setObjectName("label_password_2")
        self.lineEdit_10 = QtWidgets.QLineEdit(self.tab_2)
        self.lineEdit_10.setGeometry(QtCore.QRect(310, 130, 113, 21))
        self.lineEdit_10.setObjectName("lineEdit_10")
        self.pushButton_login = QtWidgets.QPushButton(self.tab_2)
        self.pushButton_login.setGeometry(QtCore.QRect(320, 190, 93, 28))
        self.pushButton_login.setObjectName("pushButton_login")
        self.tabWidget.addTab(self.tab_2, "")
        MainWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        self.tabWidget.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label_username.setText(_translate("MainWindow", "用户名"))
        self.label_password.setText(_translate("MainWindow", "用户密码"))
        self.label_phone.setText(_translate("MainWindow", "手机号"))
        self.label_Email.setText(_translate("MainWindow", "邮箱"))
        self.label_root_password.setText(_translate("MainWindow", "管理密码"))
        self.label_W_Q.setText(_translate("MainWindow", "weixin/QQ"))
        self.label_name.setText(_translate("MainWindow", "昵称"))
        self.label_signature.setText(_translate("MainWindow", "个性签名"))
        self.pushButton_register.setText(_translate("MainWindow", "注册"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "注册"))
        self.label_user_name.setText(_translate("MainWindow", "用户名"))
        self.label_password_2.setText(_translate("MainWindow", "密码"))
        self.pushButton_login.setText(_translate("MainWindow", "登录"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "登录"))

class register_progress(QtWidgets.QMainWindow):
    def __init__(self):
        QtWidgets.QMainWindow.__init__(self)
        self.setupUi(self)
        self.retranslateUi(self)

    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(748, 104)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.progressBar = QtWidgets.QProgressBar(self.centralwidget)
        self.progressBar.setGeometry(QtCore.QRect(10, 25, 721, 23))
        self.progressBar.setProperty("value", 24)
        self.progressBar.setObjectName("progressBar")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(10, 70, 711, 20))
        self.label.setObjectName("label")
        MainWindow.setCentralWidget(self.centralwidget)

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

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label.setText(_translate("MainWindow", "正在进行的操作"))
def register():
    global ex
    import register_progress
    username = ex.lineEdit_username.text()
    password = ex.lineEdit_password.text()
    Email = ex.lineEdit_Email.text()
    phone = ex.lineEdit_phone.text()
    root_password = ex.lineEdit_root_password.text()
    W_Q = ex.lineEdit_W_Q.text()
    R=register_progress.Run()
    R.run(10,'ss')
app = QApplication(sys.argv)
ex = login()
ex.pushButton_register.clicked.connect(register)
ex.show()
sys.exit(app.exec_())


进度条模块

from PyQt5 import QtCore, QtGui, QtWidgets
import sys
from PyQt5.QtWidgets import QApplication

class register_progress(QtWidgets.QMainWindow):
    def __init__(self,operation):
        QtWidgets.QMainWindow.__init__(self)
        self.setupUi(self,operation)
        self.retranslateUi(self,operation)
    def setupUi(self, MainWindow,operation):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(748, 104)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.progressBar = QtWidgets.QProgressBar(self.centralwidget)
        self.progressBar.setGeometry(QtCore.QRect(10, 25, 721, 23))
        self.progressBar.setProperty("value", 24)
        self.progressBar.setObjectName("progressBar")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(10, 70, 711, 20))
        self.label.setObjectName("label")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow,operation)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow,operation):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label.setText(_translate("MainWindow", operation))
class Run():
    def __init__(self):
        pass
    def run(self,num,operation):
        app = QApplication(sys.argv)
        ex = register_progress(operation)
        ex.progressBar.setRange(0, 100)
        ex.progressBar.setValue(num)
        ex.show()
        sys.exit(app.exec_())




想达到的效果是主程序执行

import register_progress
R=register_progress.Run()
R.run(10,'ss')

结果为

img

可是现在的结果为
QCoreApplication::exec: The event loop is already running

img

  • 写回答

1条回答 默认 最新

  • _GX_ 2022-09-25 06:22
    关注

    你在主程序169-173行已经定义了一个QApplication对象并运行app.exec_()进入了事件循环。
    当你点击login中register按钮是,register_progress.Run.run函数中又定义了一个新的app并运行app.exec_()。其实这里app是多余的,因为app和事件循环已经在之前的主程序里已经有了,此处应删除。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    1人已打赏

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月25日
  • 已采纳回答 9月25日
  • 创建了问题 9月24日

悬赏问题

  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏