我尝试在 UI 元素 (QLineEdit) 上使用 setattr 来填充从文本文件中读取的内容。我相信为了设置 QlineEdit 它将是 self.lineEdit.setText()
我正在读取的文本文件由名称及其值组成:
名称1=值1
splitLine[0] 由“Name1”组成,splitLine[1] 是“Value1”。 self.Name1 是我要更改的 lineEdit 的名称,因此我使用 eval() 将实际值“Name1”传递给 setattr。
我不知道如何设置该值。现在我已经尝试过这些但没有成功:
setattr(self, eval("splitLine[0]"), eval("splitLine[1]"))
setattr(self, eval("splitLine[0]"), setText(eval("splitLine[1]")))
此外,使用:
self.splitLine[0].setText(splitLine[1])
不起作用,因为它认为实际对象被称为 splitLine,而不是它的值(因此我尝试了 eval() )。
# AttributeError: 'Ui_Dialog' object has no attribute 'splitLine'
最佳答案
您需要使用getattr
,而不是setattr
。也就是说,您首先需要获取行编辑对象(通过其属性名称),以便您可以调用其setText
方法来填充字段:
lineEdit = getattr(self, splitLine[0])
lineEdit.setText(splitLine[1])
或一行:
getattr(self, splitLine[0]).setText(splitLine[1])
关于python - 在 UI 元素上使用 setattr(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35375260/