首页 > 解决方案 > 当我使用 MainWindow.hide() 函数时,它给我一个错误,指出 MainWindow 未定义但相同的 MainWindow 在 setupUI 和 retranslateUI 中工作

问题描述

我对 PyQt5 相当陌生。所以在这里,我正在尝试在登录页面对话框窗口中的第一个窗口中工作的项目。因此,如果输入的密码正确,它将打开另一个窗口。

def login(self):
    eid=self.lineEdit.text()
    epass=self.lineEdit_2.text()
    
    if eid==idd and epass==passs:
        from BloodBank import Ui_MainWindow
        self.MainWindow = QtWidgets.QMainWindow()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self.MainWindow)
        LoginPage.hide()
        self.MainWindow.show()
    else:
        self.msgdlg("Wrong ID or Password!")

在此窗口中,从标题栏菜单操作中,我尝试附加另一个窗口,当打开该窗口时,当前窗口变为隐藏。为此,我编写了以下代码:

def menu(self,action):
    txt=(action.text())
    if txt=="Blood":
        try:
            from Blood import Ui_MainWindow
            self.MainWindow1 = QtWidgets.QMainWindow()
            self.ui = Ui_MainWindow()
            self.ui.setupUi(self.MainWindow1)
            MainWindow.hide()
            self.ui.updatelist()
            self.MainWindow1.show()
        except Exception as e:
            print(e)

现在,当我在没有 MainWindow.hide() 的情况下运行上面的代码时,它运行得非常好。但是一旦我输入 MainWindow.hide() 它就会出现以下错误。

名称“MainWindow”未定义

当我尝试与登录页面相同的 .hide() 功能时,它可以工作。我需要做什么才能隐藏我的窗口?

标签: mysqlpyqt5qt-designer

解决方案


您的代码有点不清楚,但我认为这应该是self.MainWindow.hide()因为我们试图隐藏我们的父小部件。

编辑

尝试self.hide()血库文件中,而不是MainWindow.hide()我假设在文件血库中你有你的mainwindow

这是问题所在,您有两个文件,登录文件,其中包括登录页面和血库文件

当您创建它时,self.MainWindow它的实例仅在namespaceloginpage

然后您尝试从此文件中打开另一个窗口(这是代码的第二部分)。MainWindowinstance 不存在,因为您已在另一个文件(登录页面)中定义(实例化)。


推荐阅读