在 UI 元素上使用 setattr()

Using setattr() on a UI element

我正在尝试在 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'

不需要evalsplitLine 包含字符串,这是第二个参数所需的类型,对第三个参数足够。

setattr(self, splitLine[0], splitLine[1])

您需要使用 getattr,而不是 setattr。也就是说,您首先需要 获取 行编辑对象(通过其属性名称),以便您可以调用其 setText 方法来填充字段:

    lineEdit = getattr(self, splitLine[0])
    lineEdit.setText(splitLine[1])

或一行:

    getattr(self, splitLine[0]).setText(splitLine[1])