On Tuesday 18 February 2003 8:13 am, Vio wrote:
> Greetings,
> Newbie hits wall while dipping toe in QCanvas.
> Would someone be kind enough to tell
> me why I get a segfault while trying to "show()" a sprite?
>
>
> my entire code:
>
> # START OF CODE --------------------------------------------
> #
> # Testing QCanvas
> #
>
> import sys
> from qt import *
> from qtcanvas import *
> TRUE = 1
> FALSE = 0
>
> class MY(QCanvas):
>
>       def __init__(self,h = 1000, w=1000):
>               QCanvas.__init__(self,h,w)
>               self.view =  QCanvasView(self)
>
> # testing text
>               self.item = QCanvasText('Testosterone',QFont (),self)
>               self.item.setX(50)
>               self.item.setY(50)
>               self.item.show()
>
> # testing sprite
>               spix = QCanvasPixmapArray()
>               spix.setImage(0,QCanvasPixmap("test.png"))
>               sprite = QCanvasSprite(spix, self)
>               sprite.move(100, 100, 0)
>               sprite.show() #<-- gives Segmentation fault
> # error message:
> #QPixmap::operator=: Cannot assign to pixmap during painting
>
> # Note: if commenting out the "sprite.show()" line, the QCanvasText
> # shows up as expected.
>
>
> # show items on screen
>               self.view.show()
>               self.update()
>
>
> if __name__ == "__main__":
>       a = QApplication(sys.argv)
>       QObject.connect(a,SIGNAL("lastWindowClosed()"),a,SLOT("quit()"))
>       w = MY()
>       a.exec_loop()
>
> # END OF CODE --------------------------------------------

I haven't got time to investigate this properly at the moment, but the 
canvas.py example script seems to have a similar problem (if you start a 
sprite). Both segfault in the QCanvasSprite::topEdge() method in Qt itself, 
although the backtrace.

The C++ version of canvas.py doesn't have the problem, so the most likely 
cause is a PyQt bug.

Phil

_______________________________________________
PyKDE mailing list    [EMAIL PROTECTED]
http://mats.gmd.de/mailman/listinfo/pykde

Reply via email to