创建QPolygon的代码导致我的PyQt应用程序停止!求助!
大家好,
下面这段代码:
self.painter = QtGui.QPainter(self)
self.painter.setRenderHint(QPainter.Antialiasing)
self.painter.translate(482,395)
self.painter.scale(300,300)
self.painter.save()
needle = Qt.QPolygon([QPoint(30, 0), QPoint(-30, 0), QPoint(0, 200)])
self.painter.setBrush(Qt.cyan)
self.painter.setPen(Qt.black)
self.painter.drawPolygon(needle)
self.painter.restore()
让我的Pyqt应用程序崩溃了。有没有人知道为什么会这样?这段代码是我用pyuic4自动生成的ui_form.py文件的一部分。把它删掉或者注释掉就能解决问题。是的,这段代码是我自己写的,而不是编译器生成的。
非常感谢!
2 个回答
0
因为你没有正确地创建你的 QPolygon。
QPolygon ()
QPolygon ( int size )
QPolygon ( const QPolygon & polygon )
QPolygon ( const QVector & points )
QPolygon ( const QRect & rectangle, bool closed = false )
你可以用一个整数、一个已经创建好的 QPolygon、一个 QVector,或者一个 QRect 来创建一个多边形,同时还可以传入 true 或 false 来决定是否闭合这个多边形。
2
把你传给 QPolygon
构造函数的列表保存在一个本地变量里。我猜当这个函数调用结束后,列表里的元素就会被垃圾回收掉,所以当你要绘制这个多边形时,它们就不见了。
points = [QPoint(30, 0), QPoint(-30, 0), QPoint(0, 200)]
needle = Qt.QPolygon(points)