如何在PyQt5中来回穿过两个窗口

时间:2017-05-23 15:03:19

标签: python pyqt5

我正在使用PyQt5创建两个窗口,主窗口和信息窗口。我想来回穿过他们,这样

  1. 初始状态: 如果主窗口打开 我可以点击按钮信息

  2. 如果点击了按钮信息 信息窗口打开,主要关闭 我可以点击主按钮

  3. 3。 如果单击主按钮 信息窗口打开,主要关闭

    但是,如果我从主窗口运行程序, 我将能够通过主按钮

    进入信息,但不能返回主页
    Traceback (most recent call last): 
    File "~/Description.py", line 259, in Show_Main
        Info.close()
    NameError: name 'Info' is not defined
    

    类似地,如果我从信息窗口运行程序,我将能够转到main,但不能返回信息

    Traceback (most recent call last): 
    File "~/M.py", line 259, in Show_Main
        Form.close()
    NameError: name 'Info' is not defined
    

    这是每个.py文件的部分代码:

    M.py

    from Description import Ui_Form
    
    class Main_Form(object):
        def setupUi(self, Form):
            Form.setObjectName("Main")
         .
         .
         .
        def Show_Description(self):
            self.DWindow = QtWidgets.QWidget()
            self.ui = Ui_Form()
            self.ui.setupUi2(self.DWindow)
            self.DWindow.show()
            Form.close()
    

    descrpition.py

    class Ui_Form(object):
        def setupUi2(self, Info):
            Info.setObjectName("info")
    
        def Show_Main(self):
            from M import Main_Form
            self.DWindow = QtWidgets.QWidget()
            self.ui = Main_Form()
            self.ui.setupUi(self.DWindow)
            self.DWindow.show()
            Info.close()
    

    不要问我为什么要在Show_Main方法中导入Main_Form而不是它,否则会返回错误。

1 个答案:

答案 0 :(得分:0)

您的错误消息是说它无法识别变量Info。从您上传的代码中,变量Info通过函数Ui_Form提供给类setupUi2。但是创建错误的函数Show_main不共享赋给Info的变量setupUi2,因为它不是实例变量。我想你可以尝试这样的事情:

def setupUi2(self,Info):
    self.Info = Info
    self.Info.setObjectName("info")

def Show_Main(self):
    ~~~
    self.Info.close()