[PyQt] properties and interfaces with dip 0.3
Phil Thompson
phil at riverbankcomputing.com
Wed Jul 13 19:24:04 BST 2011
On Wed, 13 Jul 2011 13:53:57 -0400, Lic. José M. Rodriguez Bacallao
<jmrbcu at gmail.com> wrote:
> yes, I know I can't think in interfaces like base classes but, as I
> read in documentation that attributes are automatically added to te
> concrete implementation of the interface, well, look at this sample:
>
> class ITest(Interface):
>
> id = Str()
>
>
> @implements(ITest)
> class Test(Model):
>
> @id.observer
> def on_change(self, change):
> print 'changing...'
>
>
> if __name__ == '__main__':
> test = Test()
> test.id = 'xxx'
> print test.id
>
> it give me this error:
>
> Traceback (most recent call last):
> File "/home/jmrbcu/work/dev-projects/imagis/src/imagis/ui/widget.py",
> line 49, in <module>
> class Test(Model):
> File "/home/jmrbcu/work/dev-projects/imagis/src/imagis/ui/widget.py",
> line 51, in Test
> @id.observer
> AttributeError: 'builtin_function_or_method' object has no attribute
> 'observer'
>
> and if I change @id.observer to @ITest.id.observer ten the observer is
> never called.
...because if you are using that pattern then the name of the method must
be the same as the name of the attribute, ie. 'id' instead of 'on_change'.
Phil
More information about the PyQt
mailing list