我正在尝试加载图片我无法弄清楚如何使用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。还有更好的方法吗?
答案 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)
这是一个重载功能。
使用指定的格式和转换标记从二进制数据加载像素图。