Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用按钮切换堆叠小部件中的小部件?_Python_Python 3.x_User Interface_Pyqt5 - Fatal编程技术网

Python 如何使用按钮切换堆叠小部件中的小部件?

Python 如何使用按钮切换堆叠小部件中的小部件?,python,python-3.x,user-interface,pyqt5,Python,Python 3.x,User Interface,Pyqt5,因此,我创建了一个具有2个页面的堆叠小部件。在第一页,我有一个按钮“登录”。在第二页,我有一个按钮“注销” 我想,如果我点击“登录”按钮,它将打开另一个页面/小部件,其中包含堆叠小部件中的“注销”按钮 首页索引=0 第二页索引=1 登录按钮对象名称=按钮 注销按钮对象名称=注销BTN 这是我在PyQt5中的代码: class Ui_StackedWidget(object): def setupUi(self, StackedWidget): StackedWidget.setObj

因此,我创建了一个具有2个页面的堆叠小部件。在第一页,我有一个按钮“登录”。在第二页,我有一个按钮“注销”

我想,如果我点击“登录”按钮,它将打开另一个页面/小部件,其中包含堆叠小部件中的“注销”按钮

首页索引=0
第二页索引=1

登录按钮对象名称=按钮
注销按钮对象名称=注销BTN

这是我在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中看到了一个引用)_


但它不会在窗口之间切换

根据您提供的代码,我推断您使用StackedWidget作为模板,因此您使用的类填充ui以从该类继承

我在代码中看到的一个错误是
self.ui.StackedWidget
,因为ui没有名为
StackedWidget
的属性,所以应该抛出一个异常

考虑到上述情况,解决方案是:

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_StackedWidget(object):
    def setupUi(self, StackedWidget):
        # ...

    def retranslateUi(self, StackedWidget):
        # ...


class StackedWidget(QtWidgets.QStackedWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.ui = Ui_StackedWidget()
        self.ui.setupUi(self)
        self.ui.LogoutBtn.clicked.connect(lambda : self.setCurrentIndex(0))
        self.ui.pushButton.clicked.connect(lambda : self.setCurrentIndex(1))


if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = StackedWidget()
    w.show()
    sys.exit(app.exec_())


显示switchingHi@eyllanesc的类,小部件切换工作正常。但我的第一个小部件是“登录页面”,我在其中放置了两行编辑“用户名”和“密码”,还有一个按钮“登录”。。当我单击“登录”按钮时,它会将我带到另一个带有“注销”按钮的小部件,因此当我单击“注销”按钮时,它会将我带到“登录页面”,但问题是我仍然可以看到用户名文本和密码文本。我能做些什么来移除这些?实际上,我希望每个小部件在我离开该小部件时都能刷新。@IHSANAHMADSIDDIQUE提供了一个真实的示例,我希望每个小部件在我离开该小部件时都能刷新。
from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_StackedWidget(object):
    def setupUi(self, StackedWidget):
        # ...

    def retranslateUi(self, StackedWidget):
        # ...


class StackedWidget(QtWidgets.QStackedWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.ui = Ui_StackedWidget()
        self.ui.setupUi(self)
        self.ui.LogoutBtn.clicked.connect(lambda : self.setCurrentIndex(0))
        self.ui.pushButton.clicked.connect(lambda : self.setCurrentIndex(1))


if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = StackedWidget()
    w.show()
    sys.exit(app.exec_())