gpt4 book ai didi

python - pyqt5如何打开新窗口并重新打开旧窗口

转载 作者:太空宇宙 更新时间:2023-11-03 20:14:15 24 4
gpt4 key购买 nike

Hello I do not know what to do, the window (register.py) opens very well from login.py, but the window (login.py) does not not open since register.py.

要做什么?

register.py

https://hastebin.com/oyoxoyemak.rb

login.py

https://hastebin.com/tanuhigome.rb

error code

如果删除则出现错误代码

        screen = app.primaryScreen()
size = screen.size()
print('Size: %d x %d' % (size.width(), size.height()))
rect = screen.availableGeometry()
print('Available: %d x %d' % (rect.width(), rect.height()))
self.window.move((rect.width() / 2) - 230, (rect.height() / 2) - 230)

error code 2

最佳答案

这两个问题都与范围有关。app 是两个脚本中的局部变量,仅存在于正在运行的脚本的范围内(if __name__ == "__main__": 行)。因此,如果您运行login.py,app在其范围内可用,但如果您运行register.py,app仅存在于它,但不在login.py中范围(因为它从未在“那里”创建)。

由于primaryScreen是一个静态函数,因此您不需要对应用程序实例的引用(无论如何,您可以通过QtWidgets.QApplication.instance()获得该实例):

只需将该行更改为:

    screen = QtWidgets.QApplication.primaryScreen()

在第二个问题中,问题是类似的:由于您正在运行login.py,所以MainWindow_Register从未在register.py中声明。

我没有一个“简单”的解决方案,因为你的方法有点困惑。
首先,您似乎试图从 pyuic 的输出开始实现您的程序,如果是这种情况,您应该真正避免它:编写您自己的代码并使用 pyuic 生成的文件,如 documentation 中的建议。 .
然后,每当你必须面对多个相关的窗口时,最好避免“递归”地调用它们自己,而使用单个窗口(或者更好,一个单独的对象,甚至是 QApplication 的子类)作为“管理器”。这将使一切变得更容易编程,避免冗余代码,同时减少错误的可能性。

就您而言,您可能应该始终使用登录窗口作为“起点”,然后在必要时显示注册窗口。

关于python - pyqt5如何打开新窗口并重新打开旧窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58558321/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com