She*_*Rox 1 python qt pyqt pyqt4
我对此问题进行了一些研究,但找不到任何简单的答案或教程来完成此任务。
我正在尝试找到一个小部件,它将使用QPushButton在页面之间进行转换。我听说过QStackWidget,但是我不确定如何使用它,我找到了很多教程,但是所有教程都很难理解。
因此,例如,我有一个窗口类:
import sys
from PyQt4 import QtGui, QtCore
class Window(QtGui.QMainWindow):
Run Code Online (Sandbox Code Playgroud)
如何将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_())
Run Code Online (Sandbox Code Playgroud)