我在我的app.py
中有这个:
from PyQt5 import QtWidgets
from screens import Ui_home, Ui_login_page
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
QtWidgets.QMainWindow.__init__(self)
self.home = Ui_home()
self.home.setupUi(self)
self.login = Ui_login_page()
self.login.setupUi(self)
self.screens = QtWidgets.QStackedWidget()
self.screens.addWidget(self.home)
self.screens.addWidget(self.login)
self.home.pushButton.clicked.connect(
lambda: self.screens.setCurrentWidget(self.login)
)
if __name__ == '__main__':
app = QtWidgets.QApplication([])
window = MainWindow()
window.show()
app.exec_()
在上面的代码中,Ui_home
Ui_login_page
屏幕是从PyQt5 Designer生成的*.ui
文件生成的.当我运行此代码时,我得到这个错误:
self.screens.addWidget(self.home)
TypeError: addWidget(self, w: Optional[QWidget]): argument 1 has unexpected type 'Ui_home'
我知道self.setCurrentWidget()
需要QWidget
,而pyuic5
生成的代码继承了Python object
中的类.如何解决这个问题,以便我的主页和登录屏幕可以添加到堆栈小部件中?