我有以下测试代码:

import sys
from PySide.QtGui import *

app = QApplication(sys.argv)
widget = QWidget()
painter = QPainter(widget)

创建qpanter对象时,我会收到错误消息:
QPainter::begin: Paint device returned engine == 0, type: 1

为什么?

最佳答案

如果要在小部件中绘制某些内容,则需要使用小部件的paintEvent来定义QPainter。此方法允许为即时绘制声明一个Qpainter,同时避免调用Qpainter.begin()Qpainter.end()

class MyWidget(QWidget):
    def __init__(self):
        super().__init__()

    def paintEvent(self, event):
        painter = QPainter(self)
        painter.drawLine(0, 0, 100, 100)

app = QApplication(sys.argv)
widget = MyWidget()
widget.show()
sys.exit(app.exec_())

http://doc.qt.io/qt-5/qpainter.html#details
警告:当paintdevice是小部件时,QPainter只能在paintEvent()函数或paintEvent()调用的函数中使用。

关于python - “QPainter::begin:Paint设备返回的引擎== 0,键入:1”,带有PySide,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45458342/

10-11 22:45
查看更多