如果我使用像素图创建QIcon,如以下代码片段所示:
from PyQt5 import QtGui
icon = QtGui.QIcon(':/images/view-refresh.png')
如何判断图标是否没有有效的像素图,例如因为没有找到
':/images/view-refresh.png'
?
我的解决方案是将 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。
Icon.isNull()
的文档明确指出,仅当它既没有像素图也没有文件名时,它才会返回 false。
查看成员函数列表,
availableSizes()
看起来是更好的候选者。 我测试过这个。
查看图标是否有效的好测试是
len(icon.availableSizes())>0
。
availableSizes()
对于显示 svg
的 []
文件,因此即使文件 svg
正确,也不正确。