我试图改变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