我在让任何视频播放器使用我的PyQt4设置(尝试过phonon和QMovie)时遇到了问题。下面的QMovie脚本来自一个示例,其中有几个用户将其评论为功能。对我来说,它运行但只打开一个窗口(Loading...
居中),从来没有实际播放.gif(我已经尝试过多个在线工作的.gif文件,所以文件不是问题)。我已经评论了运行三个调试步骤的结果。
接下来我该怎么办?
import sys
import os
import sip
sip.setapi('QVariant', 2)
from PyQt4 import QtGui, QtCore
class BusyLabel(QtGui.QWidget):
def __init__(self, gif, parent = None, text = None):
QtGui.QWidget.__init__(self, parent)
self.hlayout = QtGui.QHBoxLayout(self)
self.hlayout.setSpacing(0)
self.hlayout.setContentsMargins(0, 0, 0, 0)
self.setLayout(self.hlayout)
# Movie
self.movieLabel = QtGui.QLabel(self)
self.movieLabel.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)
self.movieLabel.setAlignment(QtCore.Qt.AlignCenter)
self.movie = QtGui.QMovie(gif, QtCore.QByteArray(), self)
self.movie.setScaledSize(QtCore.QSize(20,20))
self.movie.setCacheMode(QtGui.QMovie.CacheAll)
self.movie.setSpeed(100)
print self.movie.isValid() #output = False
print self.movie.supportedFormats() #output = []
self.movieLabel.setMovie(self.movie)
self.hlayout.addWidget(self.movieLabel)
# Label
self.label = QtGui.QLabel(text)
self.hlayout.addWidget(self.label)
self.movie.start()
def setText(self, text):
self.label.setText(text)
def start(self):
self.show()
self.movie.start()
def stop(self):
self.hide()
self.movie.stop()
if __name__ == "__main__":
gif = 'test1.gif'
print os.path.exists(gif) #output = True
app = QtGui.QApplication(sys.argv)
player = BusyLabel(gif)
player.setText('Loading...')
player.start()
player.show()
sys.exit(app.exec_())
output:
True
False
[]
(对于那些对我的其他尝试感到好奇的人,运行一个流行的Phonon脚本会出错:phonon backend plugin could not be loaded
......此时我会采取任何措施)
答案 0 :(得分:0)
我在这里提供了完整的工作代码,这些代码是我为回答这个(我的)问题而编写的。您只需要PyQt4
和Matplotlib
,希望这可以帮助其他面临类似麻烦的人: