如果对象名称为字符串,如何引用对象属性

问题描述 投票:0回答:1

我正在使用Python(PyQt5的最新版本)在我的屏幕上,我有30个标签,它们的名称是label_01到label_30。我想根据一些逻辑更改几个标签的文本。

我要更改的标签保存在字符串列表(标签名称)中例如,假设我的逻辑选择了以下标签:label_13,label_16,label_28

问题由于标签列表是动态的,如何基于该列表循环更改标签?

我可以这样做:self.label_1.setText('命令已发送..')但是如何将标签名称作为参数而不是“ label_1”

谢谢Eyal

python object
1个回答
0
投票

尝试接收3个参数的setattr:必须设置其属性的对象(如果在类定义中使用,可以为self),属性名称作为字符串和新值。

尝试:

# let `labels_to_change` be your dynamic list of labels you want to change and set them to be equal to new_value
labels_to_change = ['label_1','label_3']
new_value = "new_value"

for label in labels_to_change:
    setattr(getattr(self, label), "text", new_value)    
© www.soinside.com 2019 - 2024. All rights reserved.