【发布时间】:2021-04-24 06:45:44
【问题描述】:
我正在尝试使用 python-vlc 和 pyqt5 开发一个简单的视频播放器。但问题是我无法让它全屏显示。当我单击全屏按钮时 self.frame.showFullScreen() 什么也不做。我什至尝试了here.发布的解决方案
但不幸的是,它没有帮助我。我对 PyQt5 和 VLC 有点陌生,但我无法解决它。
这是我的代码:
from PyQt5 import QtCore, QtGui, QtWidgets
import vlc
import time
import os
import platform
class Ui_MainWindow(QtWidgets.QWidget):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
font = QtGui.QFont()
font.setPointSize(15)
MainWindow.setFont(font)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.frame = QtWidgets.QFrame(self.centralwidget)
self.frame.setGeometry(QtCore.QRect(0, 0, 801, 421))
self.frame.setStyleSheet("background-color: rgb(28, 29, 32);")
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setObjectName("frame")
self.label = QtWidgets.QLabel(self.frame)
self.label.setGeometry(QtCore.QRect(0, 0, 791, 421))
font = QtGui.QFont()
font.setPointSize(20)
self.label.setFont(font)
self.label.setStyleSheet("QLabel{\n"
" color: rgb(255, 255, 255)\n"
"}")
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.label.setObjectName("label")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(70, 469, 241, 91))
self.pushButton.setObjectName("pushButton")
self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_2.setGeometry(QtCore.QRect(490, 469, 241, 91))
self.pushButton_2.setObjectName("pushButton_2")
MainWindow.setCentralWidget(self.centralwidget)
self.instance = vlc.Instance()
self.mediaplayer = vlc.MediaPlayer()
self.pushButton.clicked.connect(self.Load_Video)
self.pushButton_2.clicked.connect(self.go_fullscreen)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.label.setText(_translate("MainWindow", "Click Load Video to play your favourite videos !"))
self.pushButton.setText(_translate("MainWindow", "Load Video"))
self.pushButton_2.setText(_translate("MainWindow", "Fullscreen"))
def Load_Video(self):
"""Open a media file in a MediaPlayer
"""
dialog_txt = "Choose Media File"
filename = QtWidgets.QFileDialog.getOpenFileName(self, dialog_txt, os.path.expanduser('~'))
if not filename:
return
# getOpenFileName returns a tuple, so use only the actual file name
self.media = self.instance.media_new(filename[0])
# Put the media in the media player
self.mediaplayer.set_media(self.media)
# Set the title of the track as window title
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", self.media.get_meta(0)))
if platform.system() == "Linux": # for Linux using the X Server
self.mediaplayer.set_xwindow(int(self.frame.winId()))
elif platform.system() == "Windows": # for Windows
self.mediaplayer.set_hwnd(int(self.frame.winId()))
elif platform.system() == "Darwin": # for MacOS
self.mediaplayer.set_nsobject(int(self.frame.winId()))
self.mediaplayer.play()
time.sleep(2)
def go_fullscreen(self):
self.frame.showFullScreen() # This is the part where the code doesn't work, it does nothing.
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_())
我做错了什么吗?如果是这样,请告诉我。
【问题讨论】:
标签: python pyqt5 fullscreen vlc video-player