【问题标题】:How can i create Multi-page applications in PyQt4?如何在 PyQt4 中创建多页应用程序?
【发布时间】:2016-04-17 21:50:30
【问题描述】:

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


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


例如,我有一个窗口类:

import sys
from PyQt4 import QtGui, QtCore

class Window(QtGui.QMainWindow):

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

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

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

【问题讨论】:

    标签: python qt pyqt pyqt4


    【解决方案1】:
    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_())
    

    【讨论】:

    • 抱歉打扰了,但是如何在索引上添加多个小部件? @gyu-don
    • 抱歉,我不太了解代码,我想在单个索引上添加多个小部件@gyu-don
    • QStackedWidget 只有 1 个索引。如果要显示多个小部件,可以使用布局。这是一个例子; gist.github.com/gyu-don/cc6358fddb04df7067a68279ddd433a2
    • 希望这是最后一个问题,是否可以在不使用布局的情况下做到这一点?到处移动小部件,@gyu-don
    • QStackedWidget 不适用于制作可移动的小部件。您可能需要 QDockWidget。它是可移动的。 gist.github.com/gyu-don/d93e77e939e7b8255572ee2bdc69f87e 否则,您可能需要 QDialog。
    猜你喜欢
    • 1970-01-01
    • 2017-06-16
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    相关资源
    最近更新 更多