Skip to main content
 首页 » 编程设计

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

2025年05月04日24xxx_UU

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


我正在尝试找到一个小部件,它将使用 QPushButton 在页面之间进行转换。我听说过QStackWidget,但我不太确定如何使用它,我找到了很多教程,但都很难理解。


例如,我有一个窗口类:

import sys 
from PyQt4 import QtGui, QtCore 
 
class Window(QtGui.QMainWindow): 

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

如果这样做,我如何使用 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_())