堆叠小部件页面

时间:2017-08-31 12:22:16

标签: python pyqt pyqt5 qstackedwidget

当我点击取消按钮(来自cancel_button_clicked(self):function)时,我无法返回堆叠小部件的第一页

{{1}}

1 个答案:

答案 0 :(得分:1)

不建议修改Qt Designer生成的类,如果您是初学者则更糟糕。最值得推荐的是创建一个实现逻辑的类,并使用已经创建的设计。

要做到这一点,你必须选择合适的Widget,如果你用作MainWindow的模板你应该使用QMainWindow,如果你使用Widget你必须使用QWidget,如果你使用Dialog的任何变种你应该使用QDialog作为我认为情况就是这样。

由于任务很简单,没有必要创建像槽这样的方法,我们可以使用lambda函数:lambda: self.stackedWidget.setCurrentIndex(1)

以上所有内容我都在以下代码中实现:

class Dialog(QtWidgets.QDialog, Ui_form):
    def __init__(self, parent=None):
        QtWidgets.QDialog.__init__(self, parent)
        self.setupUi(self)
        self.stackedWidget.setCurrentIndex(0)

        self.login_button.clicked.connect(self.Confirm_Button_Clicked)
        self.register_button.clicked.connect(lambda: self.stackedWidget.setCurrentIndex(1))
        self.cancel_button.clicked.connect(self.cancel_button_clicked)

    def Confirm_Button_Clicked(self):
        file = open('user.txt','r')
        [...]

    def cancel_button_clicked(self):
        self.stackedWidget.setCurrentIndex(0)


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

注意:如果要返回第一页,则应将值0作为当前索引,请记住索引从0开始。