2017-07-29 2 views
0

J'ai produit mon interface utilisateur avec Qt Designer:changement QMainWindow PyQt5 bouton après avoir appuyé sur

comme celui-ci

J'ai utilisé le fichier .ui avec le code python suivant:

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_()) 

J'ai essayé de changer la fenêtre lorsque le bouton suivant est pressé en créant une nouvelle classe et en utilisant un fichier ui différent.

J'ai trouvé ce stackoverflow post où c'est un problème similaire mais le code est ce post ne pas utiliser un .ui et je n'ai pas réussi à avoir un code de travail avec le fichier .ui. J'ai réussi à avoir une nouvelle fenêtre quand je n'utilise pas mon fichier.

Quelqu'un sait comment faire face à cela? N'est-il pas conseillé d'utiliser le fichier .ui?

Répondre

0

La solution que je propose est similaire à ma réponse précédente, l'objectif est de changer la partie graphique de sorte que nous allons utiliser la fonction setupUI() qui génère cette partie. Lorsque vous appuyez sur le bouton suivant, vous devez le modifier avec cette fonction.

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

Merci beaucoup. C'était vraiment utile et plus facile ce que j'ai essayé – Florian