Sep-14-2018, 09:51 PM
I'm trying to add mediaPlayer to my window for few days but I just can't show it. Qt Designer don't have a option for adding mediaPlayer and I can't add it manually. Any help? Thanks.
Last try:
Last try:
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtCore import QDir, Qt, QUrl from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer from PyQt5.QtMultimediaWidgets import QVideoWidget from PyQt5.QtWidgets import (QApplication, QFileDialog, QHBoxLayout, QLabel, QPushButton, QSizePolicy, QSlider, QStyle, QVBoxLayout, QWidget) class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(680, 524) MainWindow.setStyleSheet("background-image: url(program_background3);") self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.doubleSpinBox = QtWidgets.QDoubleSpinBox(self.centralwidget) self.doubleSpinBox.setGeometry(QtCore.QRect(450, 420, 62, 22)) self.doubleSpinBox.setObjectName("doubleSpinBox") self.doubleSpinBox_2 = QtWidgets.QDoubleSpinBox(self.centralwidget) self.doubleSpinBox_2.setGeometry(QtCore.QRect(110, 420, 62, 22)) self.doubleSpinBox_2.setObjectName("doubleSpinBox_2") self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(490, 270, 75, 23)) self.pushButton.setObjectName("pushButton") self.widget = QtWidgets.QWidget(self.centralwidget) self.widget.setGeometry(QtCore.QRect(0, 390, 681, 20)) self.widget.setStyleSheet("background: #222;") self.widget.setObjectName("widget") self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget) self.pushButton_2.setGeometry(QtCore.QRect(210, 440, 191, 41)) self.pushButton_2.setStyleSheet("background: #3D94F6;\n" "background-image: -webkit-linear-gradient(top, #3D94F6, #1E62D0);\n" "background-image: -moz-linear-gradient(top, #3D94F6, #1E62D0);\n" "background-image: -ms-linear-gradient(top, #3D94F6, #1E62D0);\n" "background-image: -o-linear-gradient(top, #3D94F6, #1E62D0);\n" "background-image: linear-gradient(to bottom, #3D94F6, #1E62D0);\n" "-webkit-border-radius: 20px;\n" "-moz-border-radius: 20px;\n" "border-radius: 20px;\n" "border-background: transparent;\n" " color: #FFFFFF;\n" " font-family: Open Sans;\n" " font-size: 20px;\n" " font-weight: 100;\n" " padding: 40px;\n" " box-shadow: 1px 1px 20px 0px #000000;\n" " -webkit-box-shadow: 1px 1px 20px 0px #000000;\n" " -moz-box-shadow: 1px 1px 20px 0px #000000;\n" " text-shadow: 1px 1px 20px #000000;\n" " border: solid #337FED 1px;\n" " text-decoration: none;\n" " display: inline-block;\n" " cursor: pointer;") self.pushButton_2.setObjectName("pushButton_2") self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface) self.videoWidget = QVideoWidget() self.openButton = QPushButton("Open...") self.openButton.clicked.connect(self.openFile) self.playButton = QPushButton() self.playButton.setEnabled(False) self.playButton.clicked.connect(self.play) self.positionSlider = QSlider(Qt.Horizontal) self.positionSlider.setRange(0, 0) self.positionSlider.sliderMoved.connect(self.setPosition) self.errorLabel = QLabel() self.errorLabel.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum) self.controlLayout = QHBoxLayout() self.controlLayout.setGeometry(QtCore.QRect(110, 110, 421, 221)) #self.controlLayout.setContentsMargins(0, 0, 0, 0) self.controlLayout.addWidget(self.openButton) self.controlLayout.addWidget(self.playButton) self.controlLayout.addWidget(self.positionSlider) self.layout = QVBoxLayout() self.layout.addWidget(self.videoWidget) self.layout.addLayout(self.controlLayout) self.layout.addWidget(self.errorLabel) MainWindow.setLayout(self.layout) self.mediaPlayer.setVideoOutput(self.videoWidget) self.mediaPlayer.stateChanged.connect(self.mediaStateChanged) self.mediaPlayer.positionChanged.connect(self.positionChanged) self.mediaPlayer.durationChanged.connect(self.durationChanged) self.mediaPlayer.error.connect(self.handleError) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 680, 21)) self.menubar.setObjectName("menubar") self.menuAdd_video = QtWidgets.QMenu(self.menubar) self.menuAdd_video.setObjectName("menuAdd_video") self.menuAdd_sound = QtWidgets.QMenu(self.menubar) self.menuAdd_sound.setObjectName("menuAdd_sound") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.menubar.addAction(self.menuAdd_video.menuAction()) self.menubar.addAction(self.menuAdd_sound.menuAction()) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.pushButton.setText(_translate("MainWindow", "Save As")) self.pushButton_2.setText(_translate("MainWindow", "PushButton")) self.menuAdd_video.setTitle(_translate("MainWindow", "Add video")) self.menuAdd_sound.setTitle(_translate("MainWindow", "Add sound")) def openFile(self): fileName, _ = QFileDialog.getOpenFileName(self, "Open Movie", QDir.homePath()) if fileName != '': self.mediaPlayer.setMedia( QMediaContent(QUrl.fromLocalFile(fileName))) self.playButton.setEnabled(True) def play(self): if self.mediaPlayer.state() == QMediaPlayer.PlayingState: self.mediaPlayer.pause() else: self.mediaPlayer.play() def mediaStateChanged(self, state): if self.mediaPlayer.state() == QMediaPlayer.PlayingState: self.playButton.setIcon( self.style().standardIcon(QStyle.SP_MediaPause)) else: self.playButton.setIcon( self.style().standardIcon(QStyle.SP_MediaPlay)) def positionChanged(self, position): self.positionSlider.setValue(position) def durationChanged(self, duration): self.positionSlider.setRange(0, duration) def setPosition(self, position): self.mediaPlayer.setPosition(position) def handleError(self): self.playButton.setEnabled(False) self.errorLabel.setText("Error: " + self.mediaPlayer.errorString()) from PyQt5.QtMultimediaWidgets import QVideoWidget if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())