Python 如何使用for循环访问PyQt中多个复选框的checbox文本?

Python 如何使用for循环访问PyQt中多个复选框的checbox文本?,python,pyqt5,Python,Pyqt5,我想访问多个复选框的复选框文本,例如self.checkbox\u x.setText(“Hello World”),其中x等于1到100。在任何循环的帮助下都可以打印出来。复选框的objectName编号为checkBox\u 1至checkBox\u 100您可以使用setattr()/getattr()动态创建变量 import sys from PyQt5.Qt import * class Example(QWidget): def __init__(self):

我想访问多个复选框的复选框文本,例如
self.checkbox\u x.setText(“Hello World”)
,其中x等于1到100。在任何循环的帮助下都可以打印出来。复选框的objectName编号为
checkBox\u 1
checkBox\u 100
您可以使用
setattr()
/
getattr()
动态创建变量

import sys
from PyQt5.Qt import *

class Example(QWidget):
    def __init__(self):
        super().__init__()
        
        lay = QVBoxLayout(self)

        for i in range(10):
            self.checkBox = QCheckBox(f'cb_{i+1}')
            lay.addWidget(self.checkBox)
            setattr(self, "checkBox_{}".format(i+1), self.checkBox)
         
        lay.addWidget(QPushButton("Click me", clicked=self.create_txt)) 
        
    def create_txt(self):
        for i in range(10):
            obj = getattr(self, "checkBox_{}".format(i+1))   
            obj.setText("Hello World")


if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = Example()
    w.show()
    sys.exit(app.exec_())

如果您在创建它们时无法将它们附加到列表中(您应该能够这样做),那么您可以非常“非法”(完全不推荐)地对范围(10)中的i执行
:eval(f“checkBox{i}.setText(“Hello World”)
。最好的解决方案是无论您在何处定义它们,也将它们附加到列表中;
checkBox\u list=[]
checkbox\u list.append(self.checkbox\u 1)
,然后对范围内的按钮(10)使用
:button.setText(“Hello World”)
@Felipe我想,我无法理解你的评论。我试图暗示的是我想要访问所有复选框的复选框文本。我尝试对范围内的x(15,37)使用
getattr(self,“checkBox”{}.format(x))
。例如,如果有许多不同文本的复选框,如
self.checkBox\u 1.setText(“Hello World”)
self.checkBox\u 37.setText(“Hello World 36”)
。有没有办法访问这些复选框的文本并打印它们?我不建议对此任务使用
getattr
。相反,无论您在哪里定义初始的
checkBox\ux
对象,都要将它们附加到列表中,比如说
self.checkBox\u list
。该列表将包含所有的
checkBox\ux
>对象,这将允许您遍历它们并调用它们的函数。这是最干净的方法。