Hel*_*bye 2 python qpainter pyside
我有以下测试代码:
import sys
from PySide.QtGui import *
app = QApplication(sys.argv)
widget = QWidget()
painter = QPainter(widget)
Run Code Online (Sandbox Code Playgroud)
在创建QPainter对象时,我收到错误消息:
QPainter::begin: Paint device returned engine == 0, type: 1
Run Code Online (Sandbox Code Playgroud)
为什么?
如果要在窗口小部件中绘制内容,则需要使用paintEvent窗口小部件来定义窗口小部件QPainter.这种方法允许声明一个Qpainterimmediat绘画,并通过它避免调用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_())
Run Code Online (Sandbox Code Playgroud)
http://doc.qt.io/qt-5/qpainter.html#details
警告:当paintdevice是一个小部件时,QPainter只能在paintEvent()函数内或paintEvent()调用的函数中使用.
| 归档时间: |
|
| 查看次数: |
2128 次 |
| 最近记录: |