Hi all, While wrapping the Qt4 code, I decided to split my single "Qt.so" module in many modules (that by now are: Namespace, Core and Gui), and I am using a package called Qt, that do some essential Python initializations on "__init__.py". Everything was Ok while spliting the modules, and it compiled Ok, and most of my tests ran Ok. But a strange thing is happening! There is a method called "parent" defined on the "QObject" class that returns the object's parent (or None if not it exists) that is another "QObject". As this is just a reference to a known object, I am using the "return_value_policy<reference_existing_object>" policy. The "QObject" class is defined on the "Core" module. On the other hand. I have a lot of classes defined on the "Gui" module, that are children (direct or indirect) of QObject. One of them, for example, is the "QWidget" class. When I call "parent" from a "QWidget" object it return an object with a different Python object, and I loose it's reference because the refcount of that especific new Python object is lost. I also noted that this behavior happend with other methods that return "non-new" objects. All I have to say is that when modules were together in one this problem didn't occur. To be sure of that, I just moved the QWidget class (and QPaintDevice, that is another base class of QWidget) to the "Core" module, and everything worked again. So, am I not allowed to defined derived classes in different modules, or am I doing something wrong? By now, it is not a problem defining everything in a single module, but if someone may want to write extension of the python-qt4 library, that would be a problem. By the way, the project can be downloaded from: http://developer.berlios.de/projects/python-qt4/ Thanks, [Eric Jardim]
Hi, folks... Does anybody had this same problem? I'll make a simple "dummy" class example to reproduce the error. If it is really a bug, this will be a problem for people who may want to handle extensions of a C++ library also in C++, that should also be wrapped to Python. If derived classes remain in different modules, some things get strange. I suppose that it have something related to some local pointer registry. I'll test it and send the case to you. Thanks, [Eric Jardim]
participants (1)
-
Eric Jardim