pyqt5是否迭代堆叠小部件中的项?

2024-10-03 21:32:13 发布

您现在位置:Python中文网/ 问答频道 /正文

在这个例子中

Stack = QStackedWidget (self)
stack1 = QWidgetA()
stack2 = QWidgetB()
stack3 = QWidgetC()

Stack.addWidget (self.stack1)
Stack.addWidget (self.stack2)
Stack.addWidget (self.stack3)

有没有任何方法可以遍历堆栈来检索作为堆栈中各种项目的小部件

我在QStackedWidget中找不到函数

理想情况下,我将能够返回stack1、stack2和stack3中的QWidgetA、QwidgetB和QwidgetC实例


Tags: 项目方法selfstack堆栈部件例子addwidget
2条回答

获取项目的^{},并使用您喜欢的循环风格从0迭代到< count()。您添加的每个QWidget都可以通过^{}获得

@MaximPaperno'是c++语言中的解决方案。我给它打了个对勾。下面是演示其答案的Python/PyQt代码

from PyQt5 import QtWidgets

class QWidgetA(QtWidgets.QWidget):
    def p(self):
        print('A')

class QWidgetB(QtWidgets.QWidget):
    def p(self):
        print('B')

class QWidgetC(QtWidgets.QWidget):
    def p(self):
        print('C')

if __name__ == '__main__':
    app = QtWidgets.QApplication([])
    Stack = QtWidgets.QStackedWidget()
    stack1 = QWidgetA()
    stack2 = QWidgetB()
    stack3 = QWidgetC()

    Stack.addWidget(stack1)
    Stack.addWidget(stack2)
    Stack.addWidget(stack3)

    x = Stack.count()            #<<<<
    for i in range(x):           #<<<<
        w = Stack.widget(i)      #<<<<
        w.p()

相关问题 更多 >