On Thursday 28 December 2006 18:00, Phil Thompson wrote: > On Thursday 28 December 2006 1:56 pm, Detlev Offenbach wrote: > > On Thursday 28 December 2006 12:23, Phil Thompson wrote: > > > On Thursday 28 December 2006 11:14 am, Detlev Offenbach wrote: > > > > On Thursday 28 December 2006 11:41, Phil Thompson wrote: > > > > > On Thursday 28 December 2006 9:14 am, Detlev Offenbach wrote: > > > > > > On Wednesday 27 December 2006 23:37, Phil Thompson wrote: > > > > > > > On Wednesday 27 December 2006 5:02 pm, Detlev Offenbach wrote: > > > > > > > > On Wednesday 27 December 2006 17:58, Phil Thompson wrote: > > > > > > > > > On Wednesday 27 December 2006 4:06 pm, Detlev Offenbach wrote: > > > > > > > > > > Hi, > > > > > > > > > > > > > > > > > > > > I have an application with a dialog that was created with > > > > > > > > > > Qt Designer and converted to Python with pyuic3. This > > > > > > > > > > dialog has an ok and a cancel button. These buttons are > > > > > > > > > > connected to the accept() and reject() slots. When I > > > > > > > > > > press one of the buttons, I get the following error: > > > > > > > > > > > > > > > > > > > > RuntimeError: no access to protected functions or signals > > > > > > > > > > for objects not created from Python > > > > > > > > > > > > > > > > > > > > What am I doing wrong? > > > > > > > > > > > > > > > > > > > > Versions: > > > > > > > > > > Qt 3.3.7 > > > > > > > > > > PyQt 3.17 > > > > > > > > > > sip snapshot-20061220 > > > > > > > > > > > > > > > > > > > > all on a x86_64 machine with openSUSE 10.2. All PyQt > > > > > > > > > > related stuff is self compiled. > > > > > > > > > > > > > > > > > > Have you got the .ui file? Is the problem reproducable with > > > > > > > > > just the generated .py file and the -x flag? > > > > > > > > > > > > > > > > I have the .ui file available but unfortunately it is not > > > > > > > > reproducable with just the generated .py file. The dialog > > > > > > > > itself is generated from some Python code. It looks as if the > > > > > > > > dialog doesn't really know it is a Python dialog. > > > > > > > > > > > > > > So how was the instance the exception was raised against > > > > > > > created and what method were you calling? > > > > > > > > > > > > Problem found thanks to your questions. It was caused by a parent > > > > > > object given to the dialog, which was not created from Python > > > > > > code. The protected methods (slots) called by the dialog were > > > > > > accept() and reject(). How a non Python created parent influences > > > > > > this is unclear to me. Maybe this should be mentioned in the PyQt > > > > > > docs. > > > > > > > > > > A parent doesn't influence it - you just can't call protected > > > > > methods of an object not created by Python (and Qt implements emit > > > > > by calling a protected method). > > > > > > > > And that is exactly the weird thing with this situation. The dialog > > > > was created by Python but the parent given to the dialog was not. > > > > After changing the code giving the constructor of the dialog a parent > > > > object created by Python (or None) made it work. > > > > > > Then either your code isn't working quite as you think it is, or > > > something else is going on. Either way a test case would help. > > > > And here is the test case, that shows the behavior. Just run main.py and > > press the button in the corner of the tab widget. It was tested with > > Python 2.5. > > Found it - a missing ~ in sip.h (probably missing for some time). > > Thanks for the test case. >
I'm glad I could help. Thanks, Detlev -- Detlev Offenbach [EMAIL PROTECTED] _______________________________________________ PyKDE mailing list [email protected] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
