如何判断 QIcon 是否缺少有效的像素图?

问题描述 投票:0回答:3

如果我使用像素图创建QIcon,如以下代码片段所示:

from PyQt5 import QtGui
icon = QtGui.QIcon(':/images/view-refresh.png')

如何判断图标是否没有有效的像素图,例如因为没有找到

':/images/view-refresh.png'

qt qt5
3个回答
3
投票

我的解决方案是将 QIcon 构造函数包装在一个工厂函数中,该函数创建一个显式的 QPixmap,并探测它是否有效:

def create_icon(filename):
    pixmap = QtGui.QPixmap(filename)
    if pixmap.isNull():
        raise ValueError('No icon with filename \'{}\' found'.format(filename))
    return QtGui.QIcon(pixmap)

icon = create_icon(':/images/view-refresh.png')

请注意,还有一个 QIcon.isNull 方法,但根据文档,即使像素图无效,它也可能为 false。


0
投票

Icon.isNull()
的文档明确指出,仅当它既没有像素图也没有文件名时,它才会返回 false。

查看成员函数列表,

availableSizes()
看起来是更好的候选者。 我测试过这个。

查看图标是否有效的好测试是

len(icon.availableSizes())>0


0
投票

availableSizes()
对于显示
svg
[]
文件,因此即使文件
svg
正确,也不正确。

© www.soinside.com 2019 - 2024. All rights reserved.