【问题标题】:PyQt5 Crashes while doing any interaction [duplicate]PyQt5在进行任何交互时崩溃[重复]
【发布时间】: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)
  • 我仍然不知道为什么我是初学者,为什么在删除括号时代码有效?

标签: python python-3.x pyqt pyqt5


【解决方案1】:

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

【讨论】:

  • 问题是重复的,所以请不要添加答案,而是接受您帖子顶部的重复建议。请注意,您也不应该在答案中添加问题。请阅读How to AskHow to Answer 并再次查看tour:StackOverflow 不是聊天或论坛,如果您只能编写一个,请避免编写多个 cmets(您可以编辑 cmets)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-27
  • 1970-01-01
  • 2016-11-30
  • 2012-05-28
  • 2018-11-02
  • 2023-01-30
相关资源
最近更新 更多