[PyKDE] strange bug in PyQt or python?
Gerard Vermeulen
gvermeul at labs.polycnrs-gre.fr
Sat Jul 7 14:53:32 BST 2001
Hi,
The following 30-line program (python-2.1, PyQt/sip-2.5pre1, Qt-2.2.1)
shows a bug, that goes away if I comment out line 14 and
uncomment line 15
--
#!/usr/bin/env python
import sys
from qt import *
class Item(QListViewItem):
def __init__(self, parent, value):
QListViewItem.__init__(self, parent)
self.value = value
def text(self, column):
if column == 0:
print self.value[0]
return "%4d: %5d %8.2f %8.2f" % self.value[0] # this fails
#return "%4d: %5d %s %s" % self.value[0] # this works
elif column == 1: return "[%5d, %5d)" % self.value[1]
else: return ""
list = [((1, 520, 3.14, 2.72), (13, 17)), ((2, 520, 2.72, 3.14), (37, 43))]
for item in list:
print "%4d: %5d %8.2f %8.2f" % item[0]
app = QApplication(sys.argv)
listView = QListView()
app.setMainWidget(listView)
listView.setCaption('Pourquoi?')
listView.addColumn('Settings')
listView.addColumn('Zoom')
for item in list:
Item(listView, item)
listView.show()
app.exec_loop()
--
It crashes with
--
[packer at taco python]$ python bug.py
1: 520 3.14 2.72
2: 520 2.72 3.14
(2, 520, 2.7200000000000002, 3.1400000000000001)
(1, 520, 3.1400000000000001, 2.7200000000000002)
(2, 520, 2.7200000000000002, 3.1400000000000001)
(1, 520, 3.1400000000000001, 2.7200000000000002)
(1, 520, 3.1400000000000001, 2.7200000000000002)
(1, 520, 3.1400000000000001, 2.7200000000000002)
(1, 520, 3.1400000000000001, 2.7200000000000002)
Traceback (most recent call last):
File "bug.py", line 14, in text
return "%4d: %5d %8.2f %8.2f" % self.value[0] # this fails
AttributeError: sipThis
Segmentation fault
[packer at taco python]$
--
Of course, later, I realized that the (b)right way to do this
is to write something like:
def __init__(self, parent, value):
QListViewItem.__init__(self, parent,
"format0" % value[0], "format1" % value[1])
self.value = value
and not to redefine:
def text(self, column)
but why does line 14 crash after being executed successfully
7 times?
Gerard
More information about the PyQt
mailing list