Sep-15-2018, 09:54 AM
(This post was last modified: Sep-15-2018, 10:20 AM by Axel_Erfurt.)
I've removed all stylesheet values that don't exist and changed your menu to toolbar buttons with actions.
Qt Designer uses a lot of setGeometry, I use setGeometry for the main Window only.
If you want to learn it better don't use Qt Designer.
here's a simple example without using designer
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, QMainWindow) class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(680, 542) 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, 450, 62, 22)) self.doubleSpinBox.setObjectName("doubleSpinBox") self.doubleSpinBox_2 = QtWidgets.QDoubleSpinBox(self.centralwidget) self.doubleSpinBox_2.setGeometry(QtCore.QRect(110, 450, 62, 22)) self.doubleSpinBox_2.setObjectName("doubleSpinBox_2") self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(540, 450, 75, 23)) self.pushButton.setObjectName("pushButton") self.widget = QtWidgets.QWidget(self.centralwidget) self.widget.setGeometry(QtCore.QRect(0, 0, 681,420)) 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, 44)) self.pushButton_2.setText("Push Button") self.pushButton_2.clicked.connect(self.clickBtn) self.pushButton_2.setStyleSheet("background: #3D94F6;" "background-image: linear-gradient(top, #3D94F6, #1E62D0);" "border-radius: 20px;" "color: #FFFFFF;" "font-family: Open Sans;" "font-size: 20px;" "font-weight: normal;" "padding: 10px;" "border: solid #337FED 1px;" "text-decoration: none;") self.pushButton_2.setObjectName("pushButton_2") self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface) self.videoWidget = QVideoWidget() self.videoWidget.setStyleSheet("background: #3D94F6;") self.videoWidget.setGeometry(QtCore.QRect(10, 10, 420, 350)) 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(10, 6, 421, 30)) #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) 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.QToolBar(MainWindow) # self.menubar.setGeometry(QtCore.QRect(0, 0, 680, 21)) self.menubar.setObjectName("menubar") self.menuAdd_video = QtWidgets.QAction("add video", triggered = self.add_video) self.menuAdd_video.setObjectName("menuAdd_video") self.menuAdd_sound = QtWidgets.QAction("add sound", triggered = self.add_sound) self.menuAdd_sound.setObjectName("menuAdd_sound") MainWindow.addToolBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.menubar.addAction(self.menuAdd_video) self.menubar.addAction(self.menuAdd_sound) QtCore.QMetaObject.connectSlotsByName(MainWindow) def clickBtn(self): self.statusbar.showMessage("Button clicked", 0) def add_video(self): self.statusbar.showMessage("add video", 0) def add_sound(self): self.statusbar.showMessage("add sound", 0) 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_())
Qt Designer uses a lot of setGeometry, I use setGeometry for the main Window only.
If you want to learn it better don't use Qt Designer.
here's a simple example without using designer
from PyQt5.QtGui import QIcon, QFont from PyQt5.QtCore import QDir, Qt, QUrl, QSize 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, QStatusBar) class VideoPlayer(QWidget): def __init__(self, parent=None): super(VideoPlayer, self).__init__(parent) self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface) btnSize = QSize(16, 16) videoWidget = QVideoWidget() openButton = QPushButton() openButton.setToolTip("Open Video File") openButton.setStatusTip("Open Video File") openButton.setFixedHeight(24) openButton.setIconSize(btnSize) openButton.setFont(QFont("Noto Sans", 8)) openButton.setIcon(QIcon.fromTheme("document-open")) openButton.clicked.connect(self.openFile) self.playButton = QPushButton() self.playButton.setEnabled(False) self.playButton.setFixedHeight(24) self.playButton.setIconSize(btnSize) self.playButton.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay)) self.playButton.clicked.connect(self.play) self.positionSlider = QSlider(Qt.Horizontal) self.positionSlider.setRange(0, 0) self.positionSlider.sliderMoved.connect(self.setPosition) self.statusBar = QStatusBar() self.statusBar.setFont(QFont("Noto Sans", 7)) self.statusBar.setFixedHeight(14) controlLayout = QHBoxLayout() controlLayout.setContentsMargins(0, 0, 0, 0) controlLayout.addWidget(openButton) controlLayout.addWidget(self.playButton) controlLayout.addWidget(self.positionSlider) layout = QVBoxLayout() layout.addWidget(videoWidget) layout.addLayout(controlLayout) layout.addWidget( self.statusBar) self.setLayout(layout) self.mediaPlayer.setVideoOutput(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) self.statusBar.showMessage("Ready") def openFile(self): fileName, _ = QFileDialog.getOpenFileName(self, "Open Movie", QDir.homePath() + "/Videos", "Video Files (*.mp4 *.flv *.ts *.mts *.avi)") if fileName != '': self.mediaPlayer.setMedia( QMediaContent(QUrl.fromLocalFile(fileName))) self.playButton.setEnabled(True) self.statusBar.showMessage(fileName) self.play() 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.statusBar.showMessage("Error: " + self.mediaPlayer.errorString()) if __name__ == '__main__': import sys app = QApplication(sys.argv) player = VideoPlayer() player.setWindowTitle("Player") player.setGeometry(0, 0, 600, 400) player.show() sys.exit(app.exec_())