在PyQt窗口中显示SVG图像的简单方法

Rog*_*che 6 python svg pyqt

我正在寻找一种在PyQt窗口中插入SVG图像的简单可靠的方法.更确切地说,我想知道是否可以将SVG图像应用于QLabel.这可以用于PNG图像(参见下面的代码).

import sys
from PyQt4 import QtGui

app = QtGui.QApplication(sys.argv)

label = QtGui.QLabel()
pixmap = QtGui.QPixmap('my_image.png')
label.setPixmap(pixmap)
label.show()

sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

编辑:

我需要保持SVG图像的矢量方面以调整大小.因此,在显示之前将图像转换为PNG并没有帮助.

a_m*_*_67 12

QLabel只能加载像素图.如果您需要矢量图形使用QtSvg.QSvgWidget()并加载svg文件而不转换:

import sys
from PyQt4 import QtGui, QtSvg

app = QtGui.QApplication(sys.argv) 
svgWidget = QtSvg.QSvgWidget('Zeichen_123.svg')
svgWidget.setGeometry(50,50,759,668)
svgWidget.show()

sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

或渲染到的任何亚类QPaintDevice通过QtSvg.QSvgRenderer直接,例如,以QLabel:

app = QtGui.QApplication(sys.argv) 

widget = QtGui.QLabel()
widget.setGeometry(50,200,500,500)
renderer =  QtSvg.QSvgRenderer('Zeichen_123.svg')
widget.resize(renderer.defaultSize())
painter = QtGui.QPainter(widget)
painter.restore()
renderer.render(painter)
widget.show()

sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

在这里获取Zeichen_123.svg

  • 我想,这可能是一个新问题。在使用 svg 文件中的代码询问它之前:其他查看器是否正确显示 svg 文件?svg 文件中的简单 <text> 标签还是 <flowroot> 标签?请参阅:http://stackoverflow.com/questions/19391197/svg-inkscape- generated-file-does-not-show-flowroot-objects-on-browser (2认同)