[PyKDE] C++ to Python Datatypes
Jim Bublitz
jbublitz at nwinternet.com
Tue Oct 14 08:21:01 BST 2003
On Monday October 13 2003 20:23, Russell Valentine wrote:
> On Sun, 12 Oct 2003 22:25:59 -0700
> I notice this also in the documentation.
>
> """
> void rgb(int *r, int *g, int *b);
>
> This takes no parameters and returns the r, g and b values as
> a tuple. """
> So does this mean the
> QRgb QColor::rgb () const
> function is not implemented because void rgb(int *r, int *g,
> int *b) which takes no parameters takes over instead?
That appears to be the way PyQt 3.7 is coded. PyQt 3.8 reverses
the order of the methods to this:
QRgb rgb() const; //[1]
....
// Obsolete.
void rgb(int *,int *,int *) const; //[2]
In the C++ code generated, the call matches the signature (or
argument list) of [1] first, so [2] never gets executed (the
opposite of 3.7). There's a new method "getRgb" that returns the
tuple, but it's versioned for >= Qt3.2.0, and the old rgb() that
returns a tuple isn't versioned out (but effectively is never
called anymore).
> I try the following:
>
> grayColorMap = []
> for i in range(256):
> grayColorMap.append(qRgb(i, i, i))
> grayColorMap = []
> for i in range(256):
> grayColorMap.append(QColor(i, i, i).rgb())
> It likes the first one, but not the second one. It gives.
> Traceback (most recent call last):
> File "./testQColor.py", line 21, in ?
> image = QImage(buffer, 2, 2, 8, grayColorMap, 256,
> QImage.IgnoreEndian) File
> "/usr/lib/python2.2/site-packages/qt.py", line 439, in
> __init__ libqtc.sipCallCtor(123,self,args)
> TypeError: an integer is required
If you print grayColorMap, it's probably a list of tuples of
ints, not a list of ints.
> I must admit that qRgb(r,g,b) is better than making a
> QColor(r,g,b) and calling rgb() on it, so it isn't that big of
> a deal for me at the moment.
With PyQt- 3.8 I get:
>>> from qt import QColor
>>> QColor (0x0, 0x0, 0xff).rgb ()
-16776961
so either of your versions should work with PyQt-3.8.
Looks like the sip code changed. Are you running PyQt 3.7?
Jim
More information about the PyQt
mailing list