PyQt5 Getters and Setters



为了给自己一个在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:]

相反,如果您想要类似于getattrsetattr使用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)

最新更新