我试图改变QT
中的某些字段属性。
这是代码:
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;}")
我得到了预期的结果。
答案 0 :(得分:1)
在setStyleSheet
中使用setattr()
时,它被视为全局变量(未定义)。当您使用self.first_name.setStyleSheet
时,setStyleSheet
一词被视为(正当)self.first_name
的属性。
我没有安装QT,但认为这样的事情会起作用:
req_fields = ["first_name", "last_name", "street", "city"]
for fieldname in req_fields:
field = getattr(self, field)
if field.text() == "":
field.setStyleSheet("QLineEdit { border: 2px solid red;}")
field.setText("test")