最近在Win7上用pyQT5做一个小程序,打算在Label里插入png图片。不过总是遇到QPixmap::scaled: Pixmap is a null pixmap的问题。
实现部分代码如下:
-
self.OkImage = QImage(":./images/heart.png");
-
self.WaitImage = QImage(":./images/trash.png");
-
self.NgImage = QImage(":./images/bad.png");
-
-
self.StatusLabel.setPixmap(QPixmap.fromImage(self.WaitImage).scaled(self.StatusLabel.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation));
-
self.StatusLabel.setPixmap(QPixmap.fromImage(self.OkImage).scaled(self.StatusLabel.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation));
-
self.StatusLabel.setPixmap(QPixmap.fromImage(self.NgImage).scaled(self.StatusLabel.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation));
查了许久的reference,后来终于在上找到了原因。
python脚本需要以一种它自己的方式,来知道资源文件的路径,解决办法如下:
1、建立一个资源文件,如 images.qrc。
images.qrc的内容如下:
-
<!DOCTYPE RCC><RCC version ="1.0">
-
<qresource prefix="/">
-
<file>img/image.png</file>
-
</qresource>
-
</RCC>
我们用
来声明一个图片文件的相对路径;
2、编译资源文件。
pyrcc5 -o images_rc.py images.qrc
这里我用的是pyqt5,所以对应的是pyrcc5,pyqt4对应pyrcc4.
3、在代码中导入
images_rc.py
import images_rc
这样,在label.setPixmap的时候,图片文件就不是Null了!!
阅读(27141) | 评论(0) | 转发(0) |