PyQt5在进行任何交互时崩溃[重复]

Posted

技术标签:

【中文标题】PyQt5在进行任何交互时崩溃[重复]【英文标题】:PyQt5 Crashes while doing any interaction [duplicate] 【发布时间】:2022-01-04 13:17:14 【问题描述】:

我正在尝试使用模块 LoadUI 和 QtDesigner 制作一个简单的登录/注册表单,但每次我单击一个按钮时它都会因以下错误而崩溃:

Process finished with exit code -1073740791 (0xC0000409)

所以一开始,我制作的登录表单只有一个按钮,该按钮调用一个在控制台中打印的函数“使用电子邮件成功登录:和密码:”问题是每次我点击它时,它都会崩溃那个错误,所以我重新安装了 PyQt5 Designer,因为我确信我的代码可以正常工作,因为我正在按照教程进行操作,并且我创建了一个新的 UI 文件,认为旧的 UI 文件存在错误或其他问题,现在它在添加导航到的按钮时工作正常注册表单小部件并单击它,它再次崩溃,我不知道为什么,它甚至不想向我显示注册 Ui 这里是代码

import sys
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QDialog,QApplication
from PyQt5.uic import loadUi

class Login(QDialog):
    def __init__(self):
        super(Login,self).__init__()
        loadUi("Login.ui",self)
        self.loginfun.clicked.connect(self.loginfunction)
        self.password.setEchoMode(QtWidgets.QLineEdit.Password)
        self.regbutt.clicked.connect(self.gotoregister)
    def loginfunction(self):
        email=self.email.text()
        password=self.password.text()
        print(f"Successfully logged in with email: email and password: password")
    def gotoregister(self):
        reg = Register()
        widget.addWidget(reg)
        widget.setCurrentIndex(widget.currentIndex()+1)
class Register(QDialog):
    def __init__(self):
        super(Register, self).__init__()
        loadUi("Register.ui",self)
        self.signupfun.clicked.connect(self.signup())
    def signup(self):
        email = self.email.text()
        if self.password.text() == self.cpassword.text() :
            password = self.password.text()
            print(f"Successfully Created Account with email: email and password: password")
            login = Login()
            widget.addWidget(login)
            widget.setCurrentIndex(widget.currentIndex()+1)
        else:
            print("Passwords doesn't Match")
app=QApplication(sys.argv)
window=Login()
widget=QtWidgets.QStackedWidget()
widget.addWidget(window)
widget.setFixedWidth(480)
widget.setFixedHeight(620)
widget.show()
app.exec_()

还有与 Login.Ui、Register.Ui 和 Main.py 的链接,以防万一您需要 Uis 来检查它们https://www.mediafire.com/file/rgw565l0c32j3k4/Ui.rar/file

【问题讨论】:

问题应该是独立的,而不是依赖于可能变得不可用的外部资源。我建议您在终端或提示符中运行代码并查看错误的回溯。也就是说:1.Register中的连接错误(connect的参数必须是可调用的,不是函数调用的结果;去掉括号); 2. 请改进你的代码风格,函数之间用空行分隔以提高可读性,这是一个非常重要的方面(见官方Style Guide for Python Code)。 3.您遵循教程的事实毫无意义,因为您可能复制了错误的内容,在不知道自己在做什么的情况下进行了修改,或者教程甚至可能是错误的,因此“我确信我的代码有效”是一个错误的假设。事实上,如果我认出那段代码的模式,那就是可以在 Youtube 上找到的教程,并且已知它会提供 很多 错误的建议和不好的建议实践(从您应该将 QDialog 添加到堆叠的小部件这一事实开始,但该教程中至少有十几个其他严重问题)。跨度> @musicamante ye 它被点击了。连接 所以我知道我在调试 2 小时后做错了什么,我在比较 tut 和我的代码时发现了错误,唯一的区别是我输入了这个self.signupfun.clicked.connect(self.signup()),它应该是这样的这个self.signupfun.clicked.connect(self.signup) 我仍然不知道为什么我是初学者,为什么在删除括号时代码有效? 【参考方案1】:

答案是将self.signupfun.clicked.connect(self.signup()) 更改为self.signupfun.clicked.connect(self.signup) it was clicked.connect() error

【讨论】:

问题是重复的,所以请不要添加答案,而是接受您帖子顶部的重复建议。请注意,您也不应该在答案中添加问题。请阅读How to Ask、How to Answer 并再次查看tour:*** 不是聊天或论坛,如果您只能编写一个,请避免编写多个 cmets(您可以编辑 cmets)。

以上是关于PyQt5在进行任何交互时崩溃[重复]的主要内容,如果未能解决你的问题,请参考以下文章

iOS:当应用程序因任何崩溃而退出时,是不是有任何委托方法

使用 AT&T 语法时汇编程序崩溃 [重复]

当我尝试从函数发送和接收列表时,PyQt5 接口崩溃

PyQt5 多线程崩溃,没有控制台错误

在 Windows 7 中使用 cx_freeze 创建的可执行文件在其他计算机上运行时崩溃并出现有关 PyQt5 的错误

运行构建时应用程序不断崩溃[重复]