【问题标题】:Generate a SVG file with pyqt5用pyqt5生成SVG文件
【发布时间】:2019-12-17 08:15:15
【问题描述】:

我想用pyqt5用Python画一些简单的矢量图。

到目前为止,我已经成功地使用以下代码生成了一张图片:

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *


class MyPainter(QImage):
    def __init__(self):
        super().__init__(400, 400, QImage.Format_RGB32)
        self.fill(Qt.black)
        painter = QPainter(self)
        painter.setPen(QPen(Qt.red, 8))
        painter.drawRect(40, 40, 200, 100)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = MyPainter()
    w.save('test.png', 'PNG')

绘制如下图:

我想做同样的事情,但渲染一个 SVG。

pyqt5.qtsvg 模块可以吗?它将如何插入到上面的代码中?我只是找不到任何例子。

【问题讨论】:

    标签: python qt svg qt5 pyqt5


    【解决方案1】:

    我终于找到了解决办法:

    from PyQt5.QtCore import *
    from PyQt5.QtGui import *
    from PyQt5.QtSvg import *
    
    if __name__ == "__main__":
        generator = QSvgGenerator()
        generator.setFileName("test.svg")
        generator.setSize(QSize(400, 400))
        generator.setViewBox(QRect(0, 0, 400, 400))
        painter = QPainter(generator)
        painter.fillRect(QRect(0, 0, 400, 400), Qt.black)
        painter.setPen(QPen(Qt.red, 8))
        painter.drawRect(40, 40, 200, 100)
        painter.end()
    

    QtSvg 实际上提供了一个生成器,它被作为 QPainter() 的参数。

    另外,我想做的最好是使用“脚本”方式而不是使用无用的类。

    我也不需要 QApplication,只需要绘制过程,这大大加快了过程。

    【讨论】:

      猜你喜欢
      • 2017-05-25
      • 2019-02-20
      • 2020-07-10
      • 2017-02-05
      • 1970-01-01
      • 2011-07-11
      • 1970-01-01
      • 2012-07-09
      • 2012-01-16
      相关资源
      最近更新 更多