我試圖改變QT
中的某些字段。使用setattr()訪問動態方法
這是代碼:
req_fields = ["first_name", "last_name", "street", "city"]
for field in req_fields:
if getattr(self, field).text() == "":
setattr(self, field, setStyleSheet("QLineEdit{ border : 2px solid red;}"))
setattr(self, field, setText("test"))
我得到的錯誤:
setattr(self, field, setStyleSheet("QLineEdit { border : 2px solid red;}"))
NameError: name 'setStyleSheet' is not defined
我不明白爲什麼getattr
功能的工作原理,以及setattr
沒有。
如果我手動使用:
self.first_name.setStyleSheet("QLineEdit { border : 2px solid red;}")
我得到預期的結果。
這有什麼好做GETATTR或SETATTR。由於錯誤日期,這是您嘗試調用以將結果發送到setattr - setStyleSheet - 未定義的事情。 –
但爲什麼我可以直接使用setStyleSheet? – Johny
這甚至不是'setattr'的工作。您沒有執行屬性分配。這是'getattr'的工作,就像你對'getattr(self,field).text()'所做的一樣。不要緊,'setStyleSheet'在名字中有'set'。 – user2357112