PyQT5:如何通过按钮更改屏幕?

时间:2020-05-20 15:12:16

标签: python pyqt5 qt-designer

我最近开始使用PyQt5和QtDesigner进行编程,并一直试图制作一个主菜单,并具有可切换到不同屏幕的按钮功能。目前,我的方法使用.show()和.hide(),但是这在一个应用程序屏幕上无法平稳过渡。最有效的方法是什么?

我的代码:

class Ui_MainMenu(object):
    def setupUi(self, MainMenu):
        MainMenu.setObjectName("MainMenu")
        MainMenu.resize(1366, 768)
        self.centralwidget = QtWidgets.QWidget(MainMenu)
        self.centralwidget.setObjectName("centralwidget")
        self.pianobutton = QtWidgets.QPushButton(self.centralwidget)
        self.pianobutton.setGeometry(QtCore.QRect(440, 180, 491, 61))
        font = QtGui.QFont()
        font.setFamily("Bauhaus 93")
        font.setPointSize(28)
        self.pianobutton.setFont(font)
        self.pianobutton.setObjectName("pianobutton")
        MainMenu.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(MainMenu)
        self.statusbar.setObjectName("statusbar")
        MainMenu.setStatusBar(self.statusbar)
        self.retranslateUi(MainMenu)
        QtCore.QMetaObject.connectSlotsByName(MainMenu)
        self.pianobutton.clicked.connect(self.pianoswitch)

    def retranslateUi(self, MainMenu):
        _translate = QtCore.QCoreApplication.translate
        MainMenu.setWindowTitle(_translate("MainMenu", "MainWindow"))
        self.label.setText(_translate("MainMenu", "Main Menu"))
        self.pianobutton.setText(_translate("MainMenu", "On-Screen Piano"))
        self.songsbutton.setText(_translate("MainMenu", "Saved Songs"))
        self.sheetbutton.setText(_translate("MainMenu", "Sheet Music Converter"))

    def pianoswitch(self):
        MainMenu.hide()
        self.window = QtWidgets.QMainWindow()
        self.ui = Ui_Piano()
        self.ui.setupUi (self.window)
        self.window.show()

class Ui_Piano(object):
    def setupUi(self, Piano):
        Piano.setObjectName("Piano")
        Piano.resize(1366, 768)
        self.centralwidget = QtWidgets.QWidget(Piano)
        self.centralwidget.setObjectName("centralwidget")
        Piano.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(Piano)
        self.statusbar.setObjectName("statusbar")
        Piano.setStatusBar(self.statusbar)

        self.retranslateUi(Piano)
        QtCore.QMetaObject.connectSlotsByName(Piano)

    def retranslateUi(self, Piano):
        _translate = QtCore.QCoreApplication.translate
        Piano.setWindowTitle(_translate("Piano", "MainWindow"))

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainMenu = QtWidgets.QMainWindow()
    ui = Ui_MainMenu()
    ui.setupUi(MainMenu)
    MainMenu.show()
    sys.exit(app.exec_())

0 个答案:

没有答案