使用pkgutil加载QIcons

时间:2016-05-17 13:48:58

标签: python image pyqt pyside

我正在尝试加载图片我无法弄清楚如何使用pkgutil.get_data()加载图片,我更喜欢使用它,因为我不想在我的代码中使用固定路径

目前,我有类似的东西,只有在用完同一个文件夹时才有效。

...
    self.imagePixmap = QtGui.QPixmap("img/myImage.png")
...

问题是,如果你从其他文件夹运行脚本,路径搞砸了,你会收到这个错误:

  

QPixmap :: scaled:Pixmap是一个空像素

我想使用类似pkutil.get_data("img", "myImage.png")的内容来加载图片,但这会提供图片文件中QPixmap()想要其他类型数据的数据。

唯一的"解决方法"我可以看到是使用他们在此处指定的部分内容:pkgutil.get_data 并做这样的事情:

self.myPath = os.path.dirname(sys.modules[__name__].__file__)
self.imagePixmap = QtGui.QPixmap(os.path.join(self.myPath,"img/myImage.png"))

这对我来说似乎只是kludge。还有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

这是我最终发现的。我应该让rtfm更近一点。无论如何,您可以使用loadFromData()方法从QByteArray获取数据,并将数据的格式传递给其中。

self.imagePixmap = QtGui.QPixmap()
self.imagePixmap.loadFromData(get_data(__name__, "img/myImage.png"), 'png')

以下是信息from here的链接:

  

bool QPixmap::loadFromData(const QByteArray &data, const char *format = Q_NULLPTR, Qt::ImageConversionFlags flags = Qt::AutoColor)

     

这是一个重载功能。

     

使用指定的格式和转换标记从二进制数据加载像素图。