【发布时间】:2019-12-20 18:48:26
【问题描述】:
所以我创建了一个包含 2 页的堆叠小部件。在第一页,我有一个按钮“登录”。在第二页,我有一个按钮“注销”
我想要这样,如果我点击“登录”按钮,它将打开另一个页面/小部件,其中包含堆叠小部件中的“注销”按钮。
首页索引 = 0
第二页索引 = 1
登录按钮对象名称 = pushButton
注销按钮对象名称 = LogoutBtn
这是我的 PyQt5 代码:
class Ui_StackedWidget(object):
def setupUi(self, StackedWidget):
StackedWidget.setObjectName("StackedWidget")
StackedWidget.resize(470, 406)
self.page1 = QtWidgets.QWidget()
self.page1.setObjectName("page1")
self.label = QtWidgets.QLabel(self.page1)
self.label.setGeometry(QtCore.QRect(150, 170, 35, 10))
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(self.page1)
self.label_2.setGeometry(QtCore.QRect(150, 200, 35, 10))
self.label_2.setObjectName("label_2")
self.pushButton = QtWidgets.QPushButton(self.page1)
self.pushButton.setGeometry(QtCore.QRect(230, 230, 56, 17))
self.pushButton.setObjectName("pushButton")
self.lineEdit = QtWidgets.QLineEdit(self.page1)
self.lineEdit.setGeometry(QtCore.QRect(200, 170, 113, 16))
self.lineEdit.setObjectName("lineEdit")
self.lineEdit_2 = QtWidgets.QLineEdit(self.page1)
self.lineEdit_2.setGeometry(QtCore.QRect(200, 200, 113, 16))
self.lineEdit_2.setObjectName("lineEdit_2")
self.label_3 = QtWidgets.QLabel(self.page1)
self.label_3.setGeometry(QtCore.QRect(230, 120, 35, 10))
self.label_3.setObjectName("label_3")
StackedWidget.addWidget(self.page1)
self.page = QtWidgets.QWidget()
self.page.setObjectName("page")
self.label_4 = QtWidgets.QLabel(self.page)
self.label_4.setGeometry(QtCore.QRect(180, 70, 101, 16))
self.label_4.setObjectName("label_4")
self.label_5 = QtWidgets.QLabel(self.page)
self.label_5.setGeometry(QtCore.QRect(190, 110, 91, 16))
self.label_5.setObjectName("label_5")
self.CreateBtn = QtWidgets.QPushButton(self.page)
self.CreateBtn.setGeometry(QtCore.QRect(200, 160, 56, 17))
self.CreateBtn.setObjectName("CreateBtn")
self.ShowBtn = QtWidgets.QPushButton(self.page)
self.ShowBtn.setGeometry(QtCore.QRect(200, 190, 56, 17))
self.ShowBtn.setObjectName("ShowBtn")
self.DeleteBtn = QtWidgets.QPushButton(self.page)
self.DeleteBtn.setGeometry(QtCore.QRect(200, 220, 56, 17))
self.DeleteBtn.setObjectName("DeleteBtn")
self.UpdateBtn = QtWidgets.QPushButton(self.page)
self.UpdateBtn.setGeometry(QtCore.QRect(200, 250, 56, 17))
self.UpdateBtn.setObjectName("UpdateBtn")
self.LogoutBtn = QtWidgets.QPushButton(self.page)
self.LogoutBtn.setGeometry(QtCore.QRect(320, 320, 56, 17))
self.LogoutBtn.setObjectName("LogoutBtn")
StackedWidget.addWidget(self.page)
self.page_2 = QtWidgets.QWidget()
self.page_2.setObjectName("page_2")
self.label_6 = QtWidgets.QLabel(self.page_2)
self.label_6.setGeometry(QtCore.QRect(150, 90, 141, 16))
self.label_6.setObjectName("label_6")
self.Logout1Btn = QtWidgets.QPushButton(self.page_2)
self.Logout1Btn.setGeometry(QtCore.QRect(330, 320, 56, 17))
self.Logout1Btn.setObjectName("Logout1Btn")
self.main1Btn = QtWidgets.QPushButton(self.page_2)
self.main1Btn.setGeometry(QtCore.QRect(260, 320, 56, 17))
self.main1Btn.setObjectName("main1Btn")
self.label_7 = QtWidgets.QLabel(self.page_2)
self.label_7.setGeometry(QtCore.QRect(200, 180, 35, 10))
self.label_7.setObjectName("label_7")
StackedWidget.addWidget(self.page_2)
self.retranslateUi(StackedWidget)
QtCore.QMetaObject.connectSlotsByName(StackedWidget)
然后我创建了一个函数切换(我在 StackOverflow 中看到了一个参考)_
def switching(self):
self.ui = Ui_StackedWidget()
self.ui.setupUi(self)
self.ui.LogoutBtn.clicked.connect(lambda : self.ui.StackedWidget.setCurrentIndex(0))
self.ui.pushButton.clicked.connect(lambda : self.ui.StackedWidget.setCurrentIndex(1))
但它不会在窗口之间切换。
【问题讨论】:
-
显示切换的类
标签: python python-3.x user-interface pyqt5