【发布时间】:2016-08-25 02:48:32
【问题描述】:
有时ObjectProperty 不合适。这是因为它只在对象的值发生变化时引发事件。
但是当对象的属性发生变化时呢?未引发事件。
考虑一个类:
class Point(object):
def __init__(self, x, y):
self.x = x
self.y = y
还有一个 Kivy 小部件:
class MyWidget(Widget):
point = ObjectProperty()
def __init__(self, point):
super(MyWidget, self).__init__()
self.point = point
def on_point(self, obj, value):
# do something
当我更改 point 的某些内容时会发生什么?
w = MyWidget(Point(0, 0))
w.point.x = 10
# callback not called!
回调没有被调用,因为就ObjectProperty 而言,point 没有改变。但我希望对 x 和 y 的更改计为更改并引发事件。
类似于ListProperty 知道在列表长度改变时引发事件的方式。
为此,我想我需要创建一个Property 子类PointProperty。
但我还没有找到有关如何执行此操作的文档。帮助将不胜感激。
【问题讨论】:
标签: python user-interface events kivy subclassing