我正在创建 a simple media and metdata application使用 HTML/CSS/Javascript 和 Python(使用 PyQt4)。我正在尝试使用声子制作视频播放器,但我对 PyQt4 没有任何经验。这是我的代码:
#!/usr/bin/env python
import sys
from PyQt4 import QtCore, QtGui, uic, phonon
class videoPlayer(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
ui = uic.loadUi("video.ui")
media = phonon.Phonon.MediaObject()
playQuery = False
ui..ppButton.clicked.connect(self.playPause)
def playVideo():
media.play()
def pauseVideo():
media.pause()
def playPause():
if playQuery:
pauseVideo()
else:
playVideo()
def changeVideoSource(target):
media.setCurrentSource(phonon.Phonon.MediaSource(target))
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
videoPlayer = videoPlayer()
videoPlayer.show()
app.exec_()
我很迷茫和困惑,如果有人能告诉我我做错了什么,我将不胜感激。
编辑:使用 UiType
而不是 Ui
。更改了它,但我仍然收到一个我不明白的错误,因为 video.ui
有一个名为 ppButton
的按钮。
编辑 2:有窗口要显示,但它是空的。它应该包含一个视频播放器和按钮。
最佳答案
首先,您必须为您的 video.ui
生成 python 代码,为此使用 pyuic4
工具。
pyuic4 -x video.ui -o video.py
上面的行将生成一个名为 video.py
的模块,其中将包含一个名为 UI_ 的类
然后你可以像这样修改你的代码:
import sys
from PyQt4 import QtCore, QtGui, uic, phonon
from video import UI_MyVideoWindow # Lets call it MyVideoWindow for the example.
class videoPlayer(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
self.ui = UI_MyVideoWindow()
self.ui.setUp(self) # Now you can access you widgets from self.ui
# Example: self.ui.ppButton
media = phonon.Phonon.MediaObject(self) # this object needs a parent.
playQuery = False
def playVideo():
media.play()
def pauseVideo():
media.pause()
def on_ppButton_clicked():
"""
When you generate code using QtDesigner, connections are made automagically ;)
Just write your slots following the below format:
on_<widget_name>_<signal_name>
"""
if playQuery:
pauseVideo()
else:
playVideo()
def changeVideoSource(target):
media.setCurrentSource(phonon.Phonon.MediaSource(target))
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
videoPlayer = videoPlayer()
videoPlayer.show()
app.exec_()
此方法的唯一问题是每次修改 video.ui
时都必须更新 video.py
模块。但这是一项非常简单的工作,只需再次生成它:
pyuic4 -x video.ui -o video.py
如你之前所见。
关于javascript - PyQt - QObject 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22688854/