我正在寻找一种在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_())
修改
我需要保留SVG图像的矢量方面以调整大小。因此,在显示之前将图像转换为PNG并没有帮助。
答案 0 :(得分: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_())
或直接通过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_())