Hi there,
me again.
I just did a test with PyQt, and I do not have any issue. So, I guess,
it is really linked to a problem in PySide and not Qt or my code.
Unfortunately, I cannot reproduce the problem with a simple interface.
I'll keep you posted.
Greets,
Carlo
Hi there,
I have a problem with PySide that tries to execute a function that
does not exist on an object.
First, some more explanation:
I have a special configuration that should be mentioned first. I use
PySide 1.0.5 that I compiled in 64 bit against Python 2.6 and Qt
4.5.3, both also in 64 bit. To have a successful compilation I had to
tweak some entries in a couple of CMakeFile.txt and typesystem files.
Problems came from missing elements in Qt 4.5.3 like the QColor::Hsl
and QPixmapCache::Key.
I'm working inside Maya, a 3D software package, that has switched to
Qt 4.5.3 in its version 2011. Now, there are two ways to build custom
user interfaces inside it, either with the built-in Python script
module which is pretty bad or with Python libraries like PyQt and
PySide. I'm working on a complex project with a couple of user
interfaces. Now, with the new possibilities of PySide, I would like to
replace only some parts of the existing interface that has been
written with the built-in Python module, so I do not need to rewrite
everything from scratch.
I could find a way to convert existing widgets, that have been built
in Maya into PySide QWidgets (see the bug 902 of PySide buglist). This
way I was able to just replace parts of my existing user interface
with PySide QWidgets.
So far, it seemed to work well, but randomly I get following error:
AttributeError: 'PySide.QtGui.QWidget' object has no attribute
'invalidate'
Here's an extract of my code:
class ShotAssetIconBarWidget(QtGui.QWidget):
def __init__(self, parent):
super(ShotAssetIconBarWidget, self).__init__(parent)
self.__parent = parent
self.setGeometry(QtCore.QRect(0, 0, 150, 16))
self.setObjectName("ShotAssetIconBarWidget")
self.horizontalLayout = QtGui.QHBoxLayout(self)
self.horizontalLayout.setContentsMargins(0, 0, 0, 0) # Here,
the error is thrown.
I cannot see any relationship between the setContentsMargins function
of the QHBoxLayout and the error message. If I remove the line, the
error is thrown a couple of lines later:
self.horizontalLayout.setObjectName("HorizontalLayout")
self.__assetIcon = QtGui.QLabel(self) # Here, the same error
gets thrown when I remove the error line above.
So, I investigated a little further and found following things:
* When I open a clean Maya and refresh multiple times my user
interface, everything seems to be stable until we reach a
certain amount of refreshments (between 400 and 500 times
instantiated). So I guess this call has to do with some cache or
memory cleaning that is called at some point.
* PySide tries to call the invalidate function on the parent
QWidget that I provide in the constructor. But this parent is a
QWidget. So why does PySide call the invalidate function on it
that is a function of a QLayout? When I dynamically add a
"invalidate" function that does nothing it works a little bit
more until PySide wants to call a "itemAt" function on the
parent which is again a function of QLayout but not of QWidget.
I don't know if anybody has an idea about this.
Thanks for any help!
Greets,
Carlo
_______________________________________________
PySide mailing list
[email protected]
http://lists.pyside.org/listinfo/pyside
_______________________________________________
PySide mailing list
[email protected]
http://lists.pyside.org/listinfo/pyside