如何在 Qt Designer 中添加 QVideoWidget?
How to add a QVideoWidget in Qt Designer?
我想在蓝框(ui图片)中插入视频,但我不知道如何插入视频文件。
我的代码在这里。
我不知道如何添加视频...只知道制作视频播放器的示例...
import sys
from PyQt5 import QtWidgets
from PyQt5 import QtGui
from PyQt5 import uic
from PyQt5 import QtCore
from PyQt5.QtCore import QDir, Qt, QUrl, pyqtSlot
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)
dir_audience=''
dir_movie = ''
dir_export = ''
select_emotion = 'happy'
class Form(QtWidgets.QDialog):
def __init__(self, parent=None):
QtWidgets.QDialog.__init__(self, parent)
self.ui = uic.loadUi("highlight_export_form.ui", self)
self.ui.show()
self.ui.load_audience.clicked.connect(self.load_audience_clicked)
self.ui.load_movie.clicked.connect(self.load_movie_clicked)
self.ui.start_recog.clicked.connect(self.start_recog_clicked)
self.ui.radio_happy.toggled.connect(self.on_radio_button_toggled)
self.ui.radio_surprised.toggled.connect(self.on_radio_button_toggled)
def load_audience_clicked(self, event):
dir_audience, _ = QFileDialog.getOpenFileName(self, "Open Audience", QDir.homePath())
self.path_audience.setText(dir_audience)
def load_movie_clicked(self, event):
dir_movie, _ = QFileDialog.getOpenFileName(self, "Open Movie", QDir.homePath())
self.path_movie.setText(dir_movie)
def start_recog_clicked(self, event):
self.check_1.setText("start_recognition")
def on_radio_button_toggled(self):
if self.radio_happy.isChecked():
select_emotion='happy'
self.check_3.setText(select_emotion)
elif self.radio_surprised.isChecked():
select_emotion='surprised'
self.check_3.setText(select_emotion)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = Form()
sys.exit(app.exec())
感谢您阅读我的问题。
Qt Designer 并没有展示所有的Qt widget,而我们常常想通过Qt 添加自己的widget,为此至少有两种解决方案,第一种是创建一个插件并将其加载到Qt Designer,另一个更简单。推广小部件,后者是我将在这个答案中展示的。
为此你必须做一些最小的改变,我不知道你在蓝色框中使用的是什么类型的小部件,但你必须将它更改为容器子菜单中的小部件类型如下图所示:
在他们之后你必须右击小部件和 select Promote to ...
,然后会出现一个对话框,在 Promoted class 名称部分你必须放置 QVideoWidget
,在头文件部分必须放置PyQt5.QtMultimediaWidgets
,然后按添加按钮,然后Promote:
之后您将能够在您的应用程序中使用 QVideoWidget
。
下面link有个例子
here 的回答对我来说更清楚:
QWebKit was removed in Qt 5.6. So QWebView is no longer available. Use QWebEngineView as a replacement. In Qt Designer, just add a QWidget to your form and promote it to QWebEngineView (base class: QWidget, header: QWebEngineView). Don't forget to add webenginewidgets to your project file.
我想在蓝框(ui图片)中插入视频,但我不知道如何插入视频文件。
我的代码在这里。 我不知道如何添加视频...只知道制作视频播放器的示例...
import sys
from PyQt5 import QtWidgets
from PyQt5 import QtGui
from PyQt5 import uic
from PyQt5 import QtCore
from PyQt5.QtCore import QDir, Qt, QUrl, pyqtSlot
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)
dir_audience=''
dir_movie = ''
dir_export = ''
select_emotion = 'happy'
class Form(QtWidgets.QDialog):
def __init__(self, parent=None):
QtWidgets.QDialog.__init__(self, parent)
self.ui = uic.loadUi("highlight_export_form.ui", self)
self.ui.show()
self.ui.load_audience.clicked.connect(self.load_audience_clicked)
self.ui.load_movie.clicked.connect(self.load_movie_clicked)
self.ui.start_recog.clicked.connect(self.start_recog_clicked)
self.ui.radio_happy.toggled.connect(self.on_radio_button_toggled)
self.ui.radio_surprised.toggled.connect(self.on_radio_button_toggled)
def load_audience_clicked(self, event):
dir_audience, _ = QFileDialog.getOpenFileName(self, "Open Audience", QDir.homePath())
self.path_audience.setText(dir_audience)
def load_movie_clicked(self, event):
dir_movie, _ = QFileDialog.getOpenFileName(self, "Open Movie", QDir.homePath())
self.path_movie.setText(dir_movie)
def start_recog_clicked(self, event):
self.check_1.setText("start_recognition")
def on_radio_button_toggled(self):
if self.radio_happy.isChecked():
select_emotion='happy'
self.check_3.setText(select_emotion)
elif self.radio_surprised.isChecked():
select_emotion='surprised'
self.check_3.setText(select_emotion)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = Form()
sys.exit(app.exec())
感谢您阅读我的问题。
Qt Designer 并没有展示所有的Qt widget,而我们常常想通过Qt 添加自己的widget,为此至少有两种解决方案,第一种是创建一个插件并将其加载到Qt Designer,另一个更简单。推广小部件,后者是我将在这个答案中展示的。
为此你必须做一些最小的改变,我不知道你在蓝色框中使用的是什么类型的小部件,但你必须将它更改为容器子菜单中的小部件类型如下图所示:
在他们之后你必须右击小部件和 select Promote to ...
,然后会出现一个对话框,在 Promoted class 名称部分你必须放置 QVideoWidget
,在头文件部分必须放置PyQt5.QtMultimediaWidgets
,然后按添加按钮,然后Promote:
之后您将能够在您的应用程序中使用 QVideoWidget
。
下面link有个例子
here 的回答对我来说更清楚:
QWebKit was removed in Qt 5.6. So QWebView is no longer available. Use QWebEngineView as a replacement. In Qt Designer, just add a QWidget to your form and promote it to QWebEngineView (base class: QWidget, header: QWebEngineView). Don't forget to add webenginewidgets to your project file.