- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有树莓派3。我想使用 phonon+qt+python 显示任何类型的视频。我不想在 QT 中使用 c++。我曾尝试使用以下代码,但它给出的错误如下:没有名为 phonon 的模块。我已经使用 sudo apt-get install phonon 安装 phonon,但仍然出现这样的错误。任何人都知道如何解决这个问题,或者有没有其他方法可以使用 python + qt 显示视频,或者有其他方法可以安装 phonon?
from PyQt4 import QtGui, QtCore
import PyQt4.phonon
class Window(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.media = phonon.MediaObject(self)
self.media.stateChanged.connect(self.handleStateChanged)
self.video = phonon.VideoWidget(self)
self.video.setMinimumSize(400, 400)
self.audio = phonon.AudioOutput(phonon.VideoCategory, self)
phonon.createPath(self.media, self.audio)
phonon.createPath(self.media, self.video)
self.button = QtGui.QPushButton('Choose File', self)
self.button.clicked.connect(self.handleButton)
self.list = QtGui.QListWidget(self)
self.list.addItems(phonon.BackendCapabilities.availableMimeTypes())
layout = QtGui.QVBoxLayout(self)
layout.addWidget(self.video, 1)
layout.addWidget(self.button)
layout.addWidget(self.list)
def handleButton(self):
if self.media.state() == phonon.PlayingState:
self.media.stop()
else:
path = QtGui.QFileDialog.getOpenFileName(self, self.button.text())
if path:
self.media.setCurrentSource(phonon.MediaSource(path))
self.media.play()
def handleStateChanged(self, newstate, oldstate):
if newstate == phonon.PlayingState:
self.button.setText('Stop')
elif (newstate != phonon.LoadingState and
newstate != phonon.BufferingState):
self.button.setText('Choose File')
if newstate == phonon.ErrorState:
source = self.media.currentSource().fileName()
print ('ERROR: could not play:', source.toLocal8Bit().data())
print (' %s' % self.media.errorString().toLocal8Bit().data())
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
app.setApplicationName('phonon Player')
window = Window()
window.show()
sys.exit(app.exec_())
最佳答案
您必须使用以下命令为 pyqt 安装 phonon:
sudo apt-get install python-qt4-phonon
此外,您必须更正某些导入和部分代码:
from PyQt4 import QtGui
from PyQt4.phonon import Phonon
class Window(QtGui.QWidget):
def __init__(self, parent=None):
super(Window, self).__init__(parent=parent)
self.media = Phonon.MediaObject(self)
self.video = Phonon.VideoWidget(self)
self.video.setMinimumSize(400, 400)
self.audio = Phonon.AudioOutput(Phonon.VideoCategory, self)
Phonon.createPath(self.media, self.audio)
Phonon.createPath(self.media, self.video)
self.button = QtGui.QPushButton('Choose File', self)
self.list = QtGui.QListWidget(self)
self.list.addItems(Phonon.BackendCapabilities.availableMimeTypes())
layout = QtGui.QVBoxLayout(self)
layout.addWidget(self.video, 1)
layout.addWidget(self.button)
layout.addWidget(self.list)
self.media.stateChanged.connect(self.handleStateChanged)
self.button.clicked.connect(self.handleButton)
def handleButton(self):
if self.media.state() == Phonon.PlayingState:
self.media.stop()
else:
path = QtGui.QFileDialog.getOpenFileName(self, self.button.text())
if path:
self.media.setCurrentSource(Phonon.MediaSource(path))
self.media.play()
def handleStateChanged(self, newstate, oldstate):
if newstate == Phonon.PlayingState:
self.button.setText('Stop')
elif newstate != Phonon.LoadingState and newstate != Phonon.BufferingState:
self.button.setText('Choose File')
if newstate == Phonon.ErrorState:
source = self.media.currentSource().fileName()
print('ERROR: could not play:', source.toLocal8Bit().data())
print(' %s' % self.media.errorString().toLocal8Bit().data())
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
app.setApplicationName('phonon Player')
window = Window()
window.show()
sys.exit(app.exec_())
屏幕截图:
关于python - 如何在树莓派中使用 phonon + python + qt 显示任何视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42172709/
(“ donut 派”)是否有最大切片数?我使用了 highchart(“ donut 派”)示例,但无法超过 10 个切片。请注意,内部切片“F”丢失了。下面是示例代码。 http://jsfidd
有谁知道如何找到 Samsung Galaxy 手机等同于 Settings.ACTION_ZEN_MODE_PRIORITY_SETTINGS 的常量?我有一个应用程序在三星用户单击应该将他们带到“
所以我很难弄清楚如何设置饼图/图例位置的布局。我希望图例左对齐,饼图右对齐。 40/60 百分比 -ish。 像这样: chart = new Highcharts.Chart({ c
我试图创建一种带有 4 个切片的圆形旋转木马,通过单击一个切片,它会扩展到约 2/3 的饼图,显示它的内容(另一个切片同样会收缩)基本上我是从 raphael “growing pie” 演示开始的
我尝试了所有可能的方式来提供 PIE.js 的路径,我使用的是 asp.net,这与在 java+tomcat 中的工作方式相同。我试过这样给 1)文件:css/home.css,css/pie/PI
cmds = ['time'] while True: inp = input('::> ') sinp = inp.split() if str(sinp[0]) in cm
我已经在 Raphael Google Groups 上看到过这个问题,但经过数小时的搜索后,在这里以及 Google 上,我似乎找不到解决方案。 我只是希望能够使用 jQuery 定位我的饼图(sv
这个问题在这里已经有了答案: Permission Denial: startForeground requires android.permission.FOREGROUND_SERVICE (5
我是一名优秀的程序员,十分优秀!