微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在pyqt5中使vlc视频全屏显示?

如何解决如何在pyqt5中使vlc视频全屏显示?

我正在尝试使用 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,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,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,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_())

我做错了什么吗?如果是这样,请告诉我。

解决方法

我(几乎)对 PyQT5 一无所知,但如果我指的是文档,调用 showFullScreen() 只会影响 windows,因此您必须先将框架与主窗口分离.

def go_fullscreen(self):
    self.frame.setParent(None)
    self.frame.showFullScreen()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。