为了尝试为自己提供一种在python中进行绑定的方法,我有以下代码:
wname = QLineEdit()
dname = "Test Value"
sattr = getattr(wname, "text")
如何使用上面的信息将dname的值分配给wname?
我确实知道setText()通常会在这里使用;但是,我正在探索一种绑定方法,我想知道如何利用getattr()
函数为传递的小部件提取设置器和获取器。谢谢!!!
答案 0 :(得分:0)
不确定我是否明白这一点,但可以通过
final_list = (1, "Baseline")
values = [1.0, None, False, True, 1, 100, 'ovr', 1, 'l2', None, 'liblinear', 0.0001, 0, False]
print([final_list + (x, ) for x in values])
# [(1, 'Baseline', 1.0),
# (1, 'Baseline', None),
# (1, 'Baseline', False),
# (1, 'Baseline', True),
# (1, 'Baseline', 1),
# (1, 'Baseline', 100),
# (1, 'Baseline', 'ovr'),
# (1, 'Baseline', 1),
# (1, 'Baseline', 'l2'),
# (1, 'Baseline', None),
# (1, 'Baseline', 'liblinear'),
# (1, 'Baseline', 0.0001),
# (1, 'Baseline', 0),
# (1, 'Baseline', False)]
您要检索的是函数而不是其中的文本。因此,通过致电
sattr = getattr(wname, "text")
您将设置文本。写作也一样:
sattr("abc")
答案 1 :(得分:0)
与亚历山德罗所说的类似,您需要先使用getattr
获取二传手,然后使用您的文字来调用它:
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)