在Pyqt中创建QPolygon的代码正在停止我的应用程序!帮忙吗?

2024-06-05 23:33:09 发布

您现在位置:Python中文网/ 问答频道 /正文

大家好

以下代码:

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应用程序崩溃。有人知道为什么吗?它是我ui的一部分_表单.py由pyuic4自动抛出的文件。删除/注释可以解决问题。是的,这是我自己写的,而不是编译器写的。在

非常感谢!在


Tags: 代码selfsaveqttranslatescalepainterqtgui
2条回答

因为您没有正确创建QPolygon。


QPolygon ()
    QPolygon ( int size )
    QPolygon ( const QPolygon & polygon )
    QPolygon ( const QVector & points )
    QPolygon ( const QRect & rectangle, bool closed = false )

可以使用on integer、已创建的QPolygon、QVector或QRect创建多边形,该QRect还传递true或false以闭合多边形。在

将传递给QPolygon构造函数的列表保存在局部变量中。我猜调用一返回元素就会被垃圾回收,所以当你绘制多边形时,它们就不在周围了。在

points = [QPoint(30, 0), QPoint(-30, 0), QPoint(0, 200)]
needle = Qt.QPolygon(points)

相关问题 更多 >