变化的QMainWindow PyQt5按下按钮后

问题描述:

我已生成我使用Qt Designer用户界面:变化的QMainWindow PyQt5按下按钮后

像我已经使用了下面的Python代码中的.ui文件,这

Ui_MainWindow, QtBaseClass = uic.loadUiType("vault.ui") 
Ui_Credentials, QtBaseClass = uic.loadUiType("credentials.ui") 

class Credentials(QMainWindow): 
    def __init__(self): 
     super(Credentials, self).__init__() 
     self.ui = Ui_Credentials() 
     self.ui.setupUi(self) 


class MainWindow(QMainWindow): 
    def __init__(self): 
     super(MainWindow, self).__init__() 
     self.ui = Ui_MainWindow() 
     self.ui.setupUi(self) 

     self.ui.load.clicked.connect(self.loadVault) 
     self.ui.next.clicked.connect(self.next) 

     self.controller = CLI(....) 
     self.loadVault() 

    def loadVault(self): 
     self.ui.vault.clear() 
     vaults = self.controller.listVaults() 
     for vault in vaults: 
      item = QListWidgetItem(vault) 
      self.ui.vault.addItem(item) 

    def next(self): 

     print(self.ui.vault.currentItem().text()) 
     window = Credentials() 
     window.show() 

if __name__ == "__main__": 
    app = QApplication(sys.argv) 
    window = MainWindow() 
    window.show() 
    sys.exit(app.exec_()) 

我试图通过创建一个新类并使用不同的ui文件来按下下一个按钮时更改窗口。

我发现这stackoverflow post这是一个类似的问题,但代码是这篇文章不使用.ui,我没有设法使用.ui文件的工作代码。当我不使用我的ui文件时,我成功地创建了一个新窗口。

有人知道我该如何处理这个问题?是不是建议使用.ui文件?

我提出的解决方案与我以前的答案类似,目标是更改图形部分,因此我们将使用生成该部分的函数setupUI()。

当我们按下一个按钮,你必须改变它与该功能。

Ui_MainWindow, QtBaseClass = uic.loadUiType("vault.ui") 
Ui_Credentials, QtBaseClass = uic.loadUiType("credentials.ui") 


class MainWindow(QMainWindow): 
    def __init__(self): 
     super(MainWindow, self).__init__() 
     self.startMainWindow() 

    def startMainWindow(self): 
     self.ui = Ui_MainWindow() 
     self.ui.setupUi(self) 
     self.ui.next.clicked.connect(self.startCredentials) 

    def startCredentials(self): 
     self.ui = Ui_Credentials() 
     self.ui.setupUi(self) 

if __name__ == "__main__": 
    app = QApplication(sys.argv) 
    window = MainWindow() 
    window.show() 
    sys.exit(app.exec_()) 
+0

非常感谢。这是我尝试过的非常有用和容易 – Florian