用PyQt5写桌面宠物程序时,QMovie()无法接收格式为.gif的图片,但可以接收.png的图片
编译器用的是PyCharm2022,python版本是3.7,PyQt是5.15
class loadingGif(QWidget):
def init(self):
super(loadingGif, self).init()
self.label = QLabel("", self)
self.setFixedSize(500, 500)
self.movie = QMovie('lxh.gif')
print(self.movie.isValid())
print(self.movie.lastError())
self.label.setMovie(self.movie)
self.movie.start()
self.movie.isValid()显示的是False
self.movie.lastError()显示的是3
但传入.png图片时就一切正常
这是导入.gif后窗口就一片空白
窗口能正确显示gif图片
gif本质上是动画,并不是图片,是想显示动画吗?
这里有一个问题,你好像就没有调用init
函数吧,python的默认构造函数是__init__
,并不是init
。
我刚刚尝试了一下你的代码,如果修改成下面的样子(因为你的super
导入会报错,应该是导入格式有点问题),就可以调用出来.
PS:跟你的代码相比,只修改了gif
路径,注释掉了super
,调用了一下init
class loadingGif(QWidget):
def init(self):
# super(loadingGif, self).init()
self.label = QLabel("", self)
self.setFixedSize(500, 500)
self.movie = QMovie("F:/my_desktop/demo.gif")
print(self.movie.isValid())
print(self.movie.lastError())
self.label.setMovie(self.movie)
self.movie.start()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
UI = loadingGif()
UI.init()
UI.show()
sys.exit(app.exec_())
从你运行的效果来看,应该是你的gif格式无效,因为你的movie->isValid() 当图片为gif则为无效。当为png则为有效。是不是gif的格式问题呢。
qt文档中的是这么说的