[PyQt] Integer rollover issue in signals
Rien Korstanje
rien.korstanje at gmail.com
Mon Jun 7 10:47:40 BST 2010
Hello,
I think I have identified an integer roll over issue when using PyQt slots.
When passing a python long through a signal it comes out as an int. Please
see the example below.
Is this a bug? If so, is there a workaround?
Regards,
Rien Korstanje
---
'''
Demonstrates an integer overflow in pyqt signals with
Python 2.6.5 and PyQt-Py2.6-gpl-4.7.3-2.
When the button is pressed, a signal is emitted with as argument
maxint + 1. Yet the slot receiving this signal gets minint.
Expected output:
Value that goes in 2147483648
Value that comes out -2147483648
Created on 7 Jun 2010
@author: M.P. Korstanje
'''
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class Foo(QPushButton):
barSignal = pyqtSignal((long,),)
def __init__(self, parent=None):
super(Foo, self).__init__("Click!", parent)
self.clicked.connect(self.__emitBarSignal)
self.barSignal.connect(self.barSlot)
def __emitBarSignal(self):
longValue = long(sys.maxint + 1)
print "Value that goes in %s" % str(longValue)
self.barSignal.emit(longValue)
@pyqtSlot(long)
def barSlot(self, value):
print "Value that comes out %s" % str(value)
if __name__ == '__main__':
app = QApplication(sys.argv)
foo = Foo()
foo.show()
sys.exit(app.exec_())
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20100607/02a63922/attachment.html>
More information about the PyQt
mailing list