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

2024-10-03 00:26:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一种在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并没有帮助。


Tags: 方法代码fromsvg图像importapppng
1条回答
网友
1楼 · 发布于 2024-10-03 00:26:16

QLabel只能加载pixmap。如果需要矢量图形,请使用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_())

或者直接通过QtSvg.QSvgRenderer呈现给QPaintDevice的任何子类,例如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_())

get Zeichen_123.svg here

相关问题 更多 >