在 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'
不需要eval
; splitLine
包含字符串,这是第二个参数所需的类型,对第三个参数足够。
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])
我正在尝试在 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'
不需要eval
; splitLine
包含字符串,这是第二个参数所需的类型,对第三个参数足够。
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])