我想在我的PyQt5应用程序中使用高分辨率图标。但是,以下代码片段在我的HiDPI macOS平台上生成了非常低分辨率的渲染(可以从here下载所需的图标):
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction
from PyQt5.QtGui import QIcon
app = QApplication(sys.argv)
main = QMainWindow()
icon = QIcon("waves-24px.svg")
action = QAction(icon, "Test")
toolbar = main.addToolBar("toolbar")
toolbar.addAction(action)
toolbar.show()
main.show()
sys.exit(app.exec_())
我在做什么错了?
答案 0 :(得分:1)
结果是有一个简单的解决方案:
app.setAttribute(Qt.AA_UseHighDpiPixmaps)
答案 1 :(得分:0)
从SVG加载图标时,QT首先将其渲染到像素图中。默认情况下,像素图的尺寸是从svg页面大小中选取的,即svg根元素的width和height属性。为您的svg渲染器生成24px x 24px像素图。因此,Qt首先将图片加载到低分辨率缓冲区中,然后再缩放ins内容。要解决此问题,请尝试扩大svg的width和height属性以增加页面大小和缩放图像。在Inkscape中,页面大小设置位于“文件”>“文档属性”>“页面”选项卡中。