On Wed, 13 Jul 2011 14:56:52 -0400, Lic. José M. Rodriguez Bacallao <jmr...@gmail.com> wrote: > ok, I see now, a couple of questions: > 1- and how to use observe function as a decorator
@observe('id') def on_change(self, change): Note that you don't have to use 'ITest.id'. This is because the string is parsed later on than when @ITest.id is. > 2- there is any way that the observer/setter method of a property be > called when setting the initial value No. Phil > On Wed, Jul 13, 2011 at 2:24 PM, Phil Thompson > <p...@riverbankcomputing.com> wrote: >> On Wed, 13 Jul 2011 13:53:57 -0400, Lic. José M. Rodriguez Bacallao >> <jmr...@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 >> _______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt