[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