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'
4

2 に答える 2

1

getattrではなく、を使用する必要がありますsetattr。つまり、最初に行編集オブジェクトを (その属性名を介して)取得する必要があります。これにより、そのsetTextメソッドを呼び出してフィールドに入力できるようになります。

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

または1行で:

    getattr(self, splitLine[0]).setText(splitLine[1])
于 2016-02-13T02:34:28.427 に答える
0

の必要はありませんevalsplitLineこれは、2 番目の引数に必要なタイプであり、3 番目の引数には十分なタイプです。

setattr(self, splitLine[0], splitLine[1])
于 2016-02-13T02:13:39.090 に答える