如何在 PyQt4 中创建多页应用程序?

How can i create Multi-page applications in PyQt4?

我对这个问题进行了一些研究,但我找不到任何简单的答案或教程来解决这个问题。


我正在寻找一个小部件,它将使用 QPushButton 在页面之间进行转换。听说过QStackWidget,但是不太清楚怎么用,找了很多教程,但是都比较难懂。


例如,我有一个 window class:

import sys
from PyQt4 import QtGui, QtCore

class Window(QtGui.QMainWindow):

如何将 QStackWidget 添加到此 class? (没有任何布局)

如果我这样做,我如何使用 QPushButton 切换到特定页面? (在一个索引中添加多个小部件)

extra: 是否可以添加某种过渡效果?比如褪色等

import sys
from PyQt4 import QtGui, QtCore

class Window(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)

        self.stacked_widget = QtGui.QStackedWidget()
        self.button = QtGui.QPushButton("Next")

        self.button.clicked.connect(self.__next_page)

        layout = QtGui.QVBoxLayout()
        layout.addWidget(self.stacked_widget)
        layout.addWidget(self.button)

        widget = QtGui.QWidget()
        widget.setLayout(layout)
        self.setCentralWidget(widget)

        self.stacked_widget.addWidget(QtGui.QLabel("Page 1"))
        self.stacked_widget.addWidget(QtGui.QLabel("Page 2"))
        self.stacked_widget.addWidget(QtGui.QLabel("Page 3"))

    def __next_page(self):
        idx = self.stacked_widget.currentIndex()
        if idx < self.stacked_widget.count() - 1:
            self.stacked_widget.setCurrentIndex(idx + 1)
        else:
            self.stacked_widget.setCurrentIndex(0)

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    w = Window()
    w.show()
    sys.exit(app.exec_())