PyQt6点击signinButton程序崩溃,退出码0xC0000409问题排查
PyQt6登录/注册页面崩溃问题修复(退出码0xC0000409)
问题原因分析
崩溃核心是代码中引用了未定义的控件属性,触发未捕获的AttributeError导致程序异常退出:
UI类中通过findChild获取signinButton并赋值给self.button,但后续错误使用self.signinButton连接信号,该属性未定义Second类中同理,获取SubmitSignButton赋值给self.button,却用self.SubmitSignButton连接信号,属性未定义UI类初始化时调用self.show(),之后又将实例添加到QStackedWidget,导致窗口重复显示引发冲突
修复后的代码
from PyQt6.QtWidgets import ( QMainWindow, QApplication, QDialog, QDialogButtonBox, QLabel, QTextEdit, QPushButton, QMessageBox, QMdiArea, QTableWidgetItem, QStackedWidget ) from PyQt6 import uic import sys class UI(QMainWindow): def __init__(self): super(UI, self).__init__() uic.loadUi(r"C:\Users\csc\Documents\Rentour\front.ui", self) # 正确绑定按钮控件到对应属性 self.signinButton = self.findChild(QPushButton, "signinButton") self.signinButton.clicked.connect(self.OpenSignUp) def OpenSignUp(self): sign_up = Second() widget.addWidget(sign_up) widget.setCurrentIndex(widget.currentIndex() + 1) class Second(QMainWindow): def __init__(self): super(Second, self).__init__() uic.loadUi(r"C:\Users\csc\Documents\Rentour\signpopup.ui", self) # 正确绑定按钮控件到对应属性 self.SubmitSignButton = self.findChild(QPushButton, "SubmitSignButton") self.SubmitSignButton.clicked.connect(self.SignUpSave) def SignUpSave(self): email = self.EmailLine.text() phoneno = self.PhonenoLine.text() name = self.NameLine.text() password = self.PasswordLine.text() print(password) if __name__ == "__main__": app = QApplication(sys.argv) widget = QStackedWidget() mainwindow = UI() widget.addWidget(mainwindow) widget.show() sys.exit(app.exec())
额外优化建议
- 将
widget作为参数传递给UI类,避免全局变量,提升代码封装性 - 确保Qt Designer中控件的
objectName与代码引用名称完全一致(区分大小写) - 可添加输入内容合法性校验(如邮箱格式、密码长度等)
内容的提问来源于stack exchange,提问作者Aaron Matthew gino
相关产品推荐
相关产品推荐

