全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

IP归属甄别会员请立即修改密码
查看: 843|回复: 13
打印 上一主题 下一主题

pyqt 小问题 请教一下论坛大佬

[复制链接]
跳转到指定楼层
1#
发表于 2024-2-7 20:58:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. class Loginpage(QDialog,login_Ui_Form):
  2.     def __init__(self, parent=None):
  3.         super(Loginpage, self).__init__(parent)
  4.         self.setupUi(self)
  5.         self.loginBtn.clicked.connect(self.slot_gotoMainPage)

  6.     def slot_gotoMainPage(self):
  7.         self.mainPage = MainPage(self)
  8.         self.mainPage.show()
  9.         self.close()



  10. class MainPage(QDialog,Ui_MainWindow):
  11.     def __init__(self, parent=None):
  12.         super(MainPage, self).__init__(parent)
  13.         self.setupUi(self)
  14.         #self.btnExit.clicked.connect(self.close)



  15. if __name__ == '__main__':
  16.     app=QApplication([])
  17.     window=Loginpage()
  18.     window.show()
  19.     sys.exit(app.exec_())
复制代码


报错:Process finished with exit code -1073740791 (0xC0000409)
错误代码 0xC0000409 通常指的是一个堆栈缓冲区溢出的问题。这个错误可能由多种原因引起,但在你的代码上下文中,最可能的原因是如何处理窗口(QDialog)的显示与关闭。

两个页面 一个是登录页,一个是主页面,想通过点击登录页面的按钮 跳转到主页面

但是一直出错
4#
 楼主| 发表于 2024-2-7 21:08:22 | 只看该作者
大佬们 看看
5#
 楼主| 发表于 2024-2-7 21:19:40 | 只看该作者
大佬们 来看看咯
6#
发表于 2024-2-7 21:22:11 来自手机 | 只看该作者
报错就那么点信息么?吧完整的报错发出来看看。
7#
发表于 2024-2-7 21:25:12 | 只看该作者
就这么点东西,ai也看不出来咋解决啊

错误代码 0xC0000409 通常与堆栈缓冲区溢出有关,这在 GUI 应用程序中可能是由于对象管理不当或事件处理错误引起的。在你提供的代码中,我注意到了几个可能的问题点,我们可以逐一检查并尝试解决:

窗口的生命周期管理:当你从 Loginpage 类中创建 MainPage 实例时,你将 MainPage 的实例赋值给了 self.mainPage。这在大多数情况下是可行的,但如果 Loginpage 对象在某些情况下被垃圾回收,可能会导致一些问题。确保 MainPage 的生命周期被正确管理是很重要的。

关闭窗口的方式:在 slot_gotoMainPage 方法中,你使用了 self.close() 来关闭登录窗口。这本身通常是没问题的,但在某些情况下可能会导致问题,尤其是当事件循环还在处理其他事件时。你可以尝试使用 self.hide() 替代 self.close() 来看是否有改善。

事件循环和父子窗口关系:你在创建 MainPage 时传入了 self 作为父对象。这意味着 MainPage 的生命周期与 Loginpage 紧密相关。这通常是合理的,但如果你希望 MainPage 在 Loginpage 关闭后仍然存在,你可能需要重新考虑这种父子关系的设置。

错误的其他潜在来源:考虑到错误代码指向堆栈缓冲区溢出,可能还存在其他代码部分(未在你的代码片段中显示)引起的问题。例如,任何递归调用、大量数据处理或不当的内存管理都可能导致此类问题。

为了解决这个问题,你可以尝试以下步骤:

使用 self.hide() 替代 self.close() 来隐藏 Loginpage 窗口,而不是完全关闭它。
检查是否有任何递归函数调用或大量数据处理,这可能导致堆栈溢出。
确保所有的 UI 组件都被正确初始化,没有遗漏的父对象指定,特别是对于像按钮这样的组件,确保它们已经在 self.setupUi(self) 调用中被正确设置。
如果这些步骤没有解决问题,你可能需要更详细地检查代码,或者使用调试工具来确定具体的崩溃点。
8#
 楼主| 发表于 2024-2-7 21:29:40 | 只看该作者
100637645 发表于 2024-2-7 21:25
就这么点东西,ai也看不出来咋解决啊

错误代码 0xC0000409 通常与堆栈缓冲区溢出有关,这在 GUI 应用程序 ...

试过了 还是不行
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2025-10-9 18:52 , Processed in 0.152691 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表