【问题标题】:"QPainter::begin: Paint device returned engine == 0, type: 1"“QPainter::begin:绘制设备返回引擎 == 0,类型:1”
【发布时间】:2017-08-02 10:31:26
【问题描述】:

我有以下测试代码:

import sys
from PySide.QtGui import *

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

在创建 QPainter 对象时,我收到错误消息:

QPainter::begin: Paint device returned engine == 0, type: 1

为什么?

【问题讨论】:

    标签: python pyqt pyside qpainter


    【解决方案1】:

    如果你想在一个widget里面画一些东西,你需要使用widget的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()调用的函数中使用。

    【讨论】:

      猜你喜欢
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-31
      • 2020-03-19
      • 1970-01-01
      相关资源
      最近更新 更多