rendered paste bodyfrom PyQt4 import QtCore, QtGui, QtOpenGLfrom PyQt4.phonon import *from MainWindow import *import sysclass VideoPreviewWidget(Phonon.VideoWidget): def __init__(self, source, aspect = Phonon.VideoWidget.AspectRatioWidget): Phonon.VideoWidget.__init__(self) if source[0:7] == 'http://': print "Setting source to url" source = QtCore.QUrl(source) self.mediaObject = Phonon.MediaObject() self.mediaSource = Phonon.MediaSource(source) self.mediaObject.setCurrentSource(self.mediaSource) self.setAspectRatio(aspect) Phonon.createPath(self.mediaObject, self) #self.audioObject = Phonon.AudioOutput(Phonon.VideoCategory) #Phonon.createPath(self.mediaObject, self.audioObject) self.connect(self.mediaObject, QtCore.SIGNAL("stateChanged(Phonon::State)"), self.updateState) def play(self): self.mediaObject.play() def updateState(self, state): print "State changed" def player(self): return selfclass BabylonAD(QtGui.QMainWindow): def __init__(self): QtGui.QMainWindow.__init__(self, None) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.displayMainWidget() self.displayWidgets() def displayMainWidget(self): self.scene = QtGui.QGraphicsScene() self.widget = VideoPreviewWidget('/home/ninjachrist/1.avi') self.proxy = QtGui.QGraphicsProxyWidget() self.proxy.setWidget(self.widget) self.proxy.show() self.scene.addItem(self.proxy) self.view = QtGui.QGraphicsView(self.scene) self.view.setViewport(QtOpenGL.QGLWidget()) self.view.show() self.ui.video.addWidget(self.view) self.widget.play() def displayWidgets(self): self.verticalPlayers = [] for i in [1, 2, 3, 4]: widget = VideoPreviewWidget('/home/ninjachrist/1.avi') self.verticalPlayers.append(widget) self.scenes = [] self.views = [] self.proxies = [] for player in self.verticalPlayers: scene = QtGui.QGraphicsScene() proxy = QtGui.QGraphicsProxyWidget() proxy.setWidget(player) proxy.show() proxy.setCacheMode(QtGui.QGraphicsItem.NoCache) self.proxies.append(proxy) scene.addItem(proxy) self.scenes.append(scene) view = QtGui.QGraphicsView(scene) view.setViewportUpdateMode(QtGui.QGraphicsView.BoundingRectViewportUpdate); self.view.setViewport(QtOpenGL.QGLWidget()) view.show() self.views.append(view) self.ui.left.addWidget(view) player.play() if __name__ == "__main__": app = QtGui.QApplication(sys.argv) app.setApplicationName("test2") babylon = BabylonAD() babylon.show() sys.exit(app.exec_())