You need to enable JavaScript to run this app. PyQt5点击登录按钮后login.ui界面无法加载问题求助
优惠活动
大模型
产品
解决方案
定价
更多

PyQt5点击登录按钮后login.ui界面无法加载问题求助

问题原因

你的代码核心错误是重复实例化了欢迎界面,且显示的是未和堆叠容器绑定的独立实例:

  • 你先创建了welcome = WelcomeScreen()并添加到了QStackedWidget容器widget中,这个是正确关联了容器的实例
  • 后续又单独创建了window = WelcomeScreen()并调用show()显示,这个实例和前面的widget容器完全无关,点击登录时操作的是全局的widget容器,但你从来没有显示过这个容器,自然看不到登录界面加载。

修正后的完整代码

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

class WelcomeScreen(QDialog):
    def __init__(self):
        super(WelcomeScreen, self).__init__()
        loadUi('welcomescreen.ui', self)
        self.login.clicked.connect(self.gotologin)

    def gotologin(self):
        login = LoginScreen()
        widget.addWidget(login)
        widget.setCurrentIndex(widget.currentIndex()+1)

class LoginScreen(QDialog):
    def __init__(self):
        super(LoginScreen, self).__init__()
        loadUi('login.ui', self)


app = QApplication(sys.argv)
welcome = WelcomeScreen()
widget = QtWidgets.QStackedWidget()
widget.addWidget(welcome)
widget.setFixedHeight(800)
widget.setFixedWidth(1200)
# 删掉重复的WelcomeScreen实例,直接显示堆叠容器即可
widget.show()

try:
    sys.exit(app.exec_())
except:
    print('Exiting')

修改说明

  • 移除了重复创建的window = WelcomeScreen()和window.show()代码
  • 改为直接调用widget.show()显示堆叠容器,容器内已经包含了绑定好点击事件的欢迎界面,点击登录后切换到登录界面的逻辑就可以正常生效
  • 额外优化建议:可以把widget作为参数传入类中避免使用全局变量,当前场景下上面的修改已经可以解决问题。

内容的提问来源于stack exchange,提问作者cheese

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 02:57:05