On Mon, 15 Feb 2010 17:19:16 -0600, Aron Bierbaum <[email protected]>
wrote:
> I have attached a test that shows a possible regression in
> QtGui.QColor.fromRgb() PyQt 4.7. In past releases we have been able to
> get the color the grid lines in a table from the current style and
> convert it to a QColor. For some reason PyQt raises a TypeError
> exception:
> 
> Raw color: -2565928
> Traceback (most recent call last):
>   File "test_fromrgb.py", line 7, in <module>
>     color = QtGui.QColor.fromRgb(raw_color)
> TypeError: arguments did not match any overloaded call:
>   QColor.fromRgb(int): argument 1 has unexpected type 'int'
>   QColor.fromRgb(int, int, int, int alpha=255): not enough arguments
> 
> Is this a valid use of the method, and if so any ideas what is going
wrong?

I don't think it is a regression - maybe you are just now seeing values
that cause a problem?

The problem is that C++ is returning an unsigned value with the high bit
set as an int. Python then assumes it is negative, but fromRgb() is
expecting an unsigned (ie. positive) value.

Just make sure that raw_color is unsigned before you use it...

raw_color &= 0xffffffff

Phil
_______________________________________________
PyQt mailing list    [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to