python - 在 UI 元素上使用 setattr()

标签 python pyqt qlineedit setattr

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

相关文章:

qt - QLineEdit IP 部分验证

python - PyQt4中如何通过代理发起请求

python - Django 上的正则表达式不起作用

python - 如何解决列表索引超出范围错误?

python - 在 dataStore 中创建新实体时为 "Too much contention"

Python 2.7 : pyinstaller create qt.conf文件

python - 如何在 PyQt 中创建可折叠框

c++ - 像谷歌建议的例子

python - 一些 QLineEdit 问题

python - "Element click intercepted"尝试单击复选框时出错