[Python] PyQt: How to switch widgets in QStackedWidget

Discussão em 'Python' iniciado por Stack, Março 24, 2025.

  1. Stack

    Stack Membro Participativo

    I have two buttons (wgtbtnA & wgtbtnB) placed on two different pages (page1 and page2, respectively) inside a parent object (objectName: stackedWidget). My dilemma is this: when I run the code, the arrows don't display in PyQt. Why? How do I alternate from page1 to page2 and vice-versa?

    Here is an image of runtime, which conveys what I am asking for:

    [​IMG]

    Qt Designer:

    [​IMG]

    I'd like to keep those small back arrows.

    Below is my code:

    # -*- coding: utf-8 -*-

    # Form implementation generated from reading ui file 'stackedWidget.ui'
    #
    # Created by: PyQt4 UI code generator 4.11.4
    #
    # WARNING! All changes made in this file will be lost!

    from PyQt4 import QtCore, QtGui
    import sys
    import os


    try:
    _fromUtf8 = QtCore.QString.fromUtf8
    except AttributeError:
    def _fromUtf8(s):
    return s

    try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
    return QtGui.QApplication.translate(context, text, disambig, _encoding)
    except AttributeError:
    def _translate(context, text, disambig):
    return QtGui.QApplication.translate(context, text, disambig)

    class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
    MainWindow.setObjectName(_fromUtf8("MainWindow"))
    MainWindow.resize(512, 304)
    self.centralwidget = QtGui.QWidget(MainWindow)
    self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
    self.stackedWidget = QtGui.QStackedWidget(self.centralwidget)
    self.stackedWidget.setGeometry(QtCore.QRect(150, 60, 161, 121))
    self.stackedWidget.setObjectName(_fromUtf8("stackedWidget"))
    self.page = QtGui.QWidget()
    self.page.setObjectName(_fromUtf8("page"))
    self.wgtMainWindow = QtGui.QPushButton(self.page)
    self.wgtMainWindow.setGeometry(QtCore.QRect(50, 50, 75, 23))
    self.wgtMainWindow.setObjectName(_fromUtf8("wgtMainWindow"))
    self.stackedWidget.addWidget(self.page)
    self.page_2 = QtGui.QWidget()
    self.page_2.setObjectName(_fromUtf8("page_2"))
    self.wgtbtnB = QtGui.QPushButton(self.page_2)
    self.wgtbtnB.setGeometry(QtCore.QRect(50, 50, 75, 23))
    self.wgtbtnB.setObjectName(_fromUtf8("wgtbtnB"))
    self.stackedWidget.addWidget(self.page_2)
    MainWindow.setCentralWidget(self.centralwidget)
    self.menubar = QtGui.QMenuBar(MainWindow)
    self.menubar.setGeometry(QtCore.QRect(0, 0, 512, 21))
    self.menubar.setObjectName(_fromUtf8("menubar"))
    MainWindow.setMenuBar(self.menubar)
    self.statusbar = QtGui.QStatusBar(MainWindow)
    self.statusbar.setObjectName(_fromUtf8("statusbar"))
    MainWindow.setStatusBar(self.statusbar)

    self.retranslateUi(MainWindow)
    self.stackedWidget.setCurrentIndex(1)
    QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
    MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
    self.wgtMainWindow.setText(_translate("MainWindow", "Widget A", None))
    self.wgtbtnB.setText(_translate("MainWindow", "Widget B", None))


    class ControlMainWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
    super(ControlMainWindow, self).__init__(parent)
    self.ui = Ui_MainWindow()
    self.ui.setupUi(self)

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

    Continue reading...

Compartilhe esta Página