为了给自己一个在python中绑定的方法,我有以下代码:
wname = QLineEdit()
dname = "Test Value"
sattr = getattr(wname, "text")
如何使用上面的信息将dname的值分配给wname
我知道setText((通常会在这里使用;然而,我正在探索一种绑定方法,我想知道如何利用getattr()
函数来提取传递的小部件的setter和getter。谢谢
不确定我是否明白了,但通过
sattr = getattr(wname, "text")
您检索的是函数,而不是其中的文本。因此,通过调用
sattr("abc")
你将设置文本。写入相同:
sattr = gettar(wname, "setText")
sattr("Hello World!")
与Alessandro所说的类似,您需要先用getattr
获取setter,然后用您的文本调用它:
wname = QLineEdit()
dname = "Test Value"
sattr = getattr(wname, "setText")
sattr(dname)
如果你想构建一些基于属性名称同时获得getter和setter的代码,我想你可以这样做:
def get_getters_and_setters(widget, name):
return getattr(widget, name), getattr(widget, 'set' + name[0].upper() + name[1:]
相反,如果您想要类似于getattr
和setattr
使用Python属性的方式,但对于已经存在的小部件属性,我想您可以执行以下操作,但对我来说这似乎有点过头了:
class CustomLineEdit(QtWidgets.QLineEdit):
@property
def textAttribute(self):
return self.text()
@textAttribute.setter
def textAttribute(self, value):
self.setText(value)
wname = CustomLineEdit()
dname = "Test Value"
setattr(wname, 'textAttribute', dname)