我最近开始使用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_())