改变按下按钮后的QMainWindow PyQt5

2024-05-28 22:48:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Qt Designer生成了我的UI:

像这样

我将.ui文件与以下python代码一起使用:

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文件来更改按下next按钮时的窗口。在

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

有人知道我该怎么处理吗?不建议使用.ui文件吗?在


Tags: 文件代码selfuiinitdefwindownext
1条回答
网友
1楼 · 发布于 2024-05-28 22:48:20

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

当我们按下“下一步”按钮时,你必须用那个功能把它改回来。在

Ui_MainWindow, _ = uic.loadUiType("vault.ui")
Ui_Credentials, _ = 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_())

相关问题 更多 >

    热门问题