加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

qt4 – 在QLabel中显示.gif动画

发布时间:2020-12-14 23:50:52 所属栏目:资源 来源:网络整理
导读:我想在QLabel小部件中显示.gif动画以及文本. 以下代码不起作用: self.status_txt = QtGui.QLabel('Loading... img src="etc/loading.gif"') 因为图像不会动画. 我尝试使用QMovie对象来实现它: self.status_txt = QtGui.QLabel("Loading...")movie = QtGui.
我想在QLabel小部件中显示.gif动画以及文本.

以下代码不起作用:

self.status_txt = QtGui.QLabel('Loading... <img src="etc/loading.gif">')

因为图像不会动画.

我尝试使用QMovie对象来实现它:

self.status_txt = QtGui.QLabel("Loading...")
movie = QtGui.QMovie("etc/loading.gif")
self.status_txt.setMovie(movie)
movie.start()

但后来我无法把动画和文字放在一起.
除了使用两种不同的标签外,还有其他解决方案吗

解决方法

你可以添加一个布局到标签,然后添加另一个标签与文本…
self.status_txt = QtGui.QLabel()
movie = QtGui.QMovie("etc/loading.gif")
self.status_txt.setMovie(movie)
movie.start()
self.status_txt.setLayout(QtGui.QHBoxLayout())
self.status_txt.layout().addWidget(QLabel('Loading...'))

编辑:

如果您使用自己版本的QLabel和QPainter自行绘制文本,则可以:

from PyQt4.QtCore import QSize
from PyQt4.QtGui import QApplication,QLabel,QMovie,QPainter,QFontMetrics

class QTextMovieLabel(QLabel):
    def __init__(self,text,fileName):
        QLabel.__init__(self)
        self._text = text
        m = QMovie(fileName)
        m.start()
        self.setMovie(m)

    def setMovie(self,movie):
        QLabel.setMovie(self,movie)
        s=movie.currentImage().size()
        self._movieWidth = s.width()
        self._movieHeight = s.height()

    def paintEvent(self,evt):
        QLabel.paintEvent(self,evt)
        p = QPainter(self)
        p.setFont(self.font())
        x = self._movieWidth + 6
        y = (self.height() + p.fontMetrics().xHeight()) / 2
        p.drawText(x,y,self._text)
        p.end()

    def sizeHint(self):
        fm = QFontMetrics(self.font())
        return QSize(self._movieWidth + 6 + fm.width(self._text),self._movieHeight)

    def setText(self,text):
        self._text = text

if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    l = QTextMovieLabel('Loading...','loading.gif')
    l.show()
    app.exec_()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读