PyQt5在另一个UI已经运行时更改UI

时间:2017-02-24 07:40:01

标签: python python-3.x user-interface pyqt pyqt5

我是蟒蛇世界的新手:P

我想使用PyQt5创建一个UI,只需点击一下按钮即可创建另一个窗口。

现在的问题是,一切都将通过Controller传递,并由Action执行。此操作将包含用于创建起始UI和下一个UI的代码。

请检查以下代码:

创建用户界面

def init_view(self,action,viewToCreate,cls): 
        if action=="start":
            self.app = QtWidgets.QApplication(sys.argv)
            self.window = QtWidgets.QWidget()

            #cls IS THE CLASS FOR THE UI
            #setupUI IS THE METHOD THAT CREATES THE UI
            self.ui = cls.Ui_Class(controllerReceived)
            self.ui.setupUi(self.window)
            self.window.show()
            sys.exit(self.app.exec_())

        #HERE IS THE PROBLEM, IT SHOULD CREATE A SECOND UI
        #WHILE CLOSING THE FIRST ONE   
        elif action=="change":

            #I CAN CREATE A UI USING THE FOLLOWING CODE
            #BUT ONLY IF IS CONTAINED IN THE STARTING UI
            self.window = QtWidgets.QWidget()
            ui = cls.Ui_Class()
            ui.setupUi(self.window)
            self.window.show()

1 个答案:

答案 0 :(得分:0)

如果您想要的是两个单独的窗口,为什么不将每个窗口保存到单独的变量中,然后根据需要显示和隐藏,例如

self.window1 = MyWindow1()
self.window2 = MyWindow2()
...
if action == 'start':
    self.window1.show()
    self.window2.hide()
elif action == 'change':
    self.window1.hide()
    self.window2.show()