Video播放器 PyQt5 QMediaPlayer

Python PyQt5 QMediaPlayer Video播放器
前言:
写个Python GUI介面总是让人抓狂,Debug不易,还要在脑袋内想像Window画面,哪个元件连到哪个function、该做什么、放在那一段…琐琐碎碎的,要改一小段就要从头翻到尾….真让人怀念IDE的方便年代。
前阵子从网路上找到的Source Code,拼凑成一个VideoPlayer,改完了,程式码还是迷迷糊糊的。最近,使用Qt Designer重做一个,就当是GUI的习作吧。
Source Code 在此:
[ ufrmVideo.ui]
[ ufrmVideo.py]
[VideoPlayer202108.py]
打包执行档(Win 64x) VideoPlayer202108.exe ( 还需要另外安装 K-Lite 或 ffmpeg 才能顺利播放,请自行搜寻下载。)

Step 1、 Qt Designer 建构画面
Qt Designer 建好的档 ufrmVideo.ui 转成 ufrmVideo.py
请执行 Pyuic5 ufrmVideo.ui -o ufrmVideo.py
这个档的内容就不要修改了,因为即使改了,下次再进入 Qt Designer编辑,就都不见了。

画面布置:一个Menubar 选档案、一个ListView 显示档案、一排PushButton、两个 Slider(控制音量、显示进度)、两个Label(显示播放时间、影片全长)
注:ViewButton 、PauseButton 的checkable请勾选
Step 2 、主程式
三个Class ViewerWindow 影片播放窗、MainWindow控制窗、PlaylistModel播放清单

影片播放窗

class ViewerWindow(QMainWindow):    # state for view      state = pyqtSignal(bool)    # sign for pause     sign = pyqtSignal(bool)        def closeEvent(self, e):        # emit to update the viewer button         self.state.emit()        def mousePressEvent(self, e):        if e.button() == Qt.RightButton:            print('Rt click pause')            self.sign.emit(True)                            def keyPressEvent(self,e ):        if e.key() == Qt.Key_Escape:            print('Esc pressed')            self.state.emit()

ps. 以pyqtSignal 激发ui Button,再切换自己的显示、隐藏,控制player暂停、播放…。
这种绕迷宫的方式,我已经卡卡…Sorry,有兴趣的自己研究吧。
其余代码请下载 VideoPlayer202108.py
本程式只选取主要相关事件,非完整播放程式,其它功能请自行开发。

程式执行步骤:
Menu : File --> Open
listView -->选video
Play --> View (显示影片)

结论心得:

使用Qt Designer 编排画面,可减低痛苦指数。Debug是一场灾难。除错、了解程式码、推导流程的过程,就好比是,打翻了一堆零组件,趴在地上遍地寻找,查查看这零件功能是啥,再一片片组装测试…Python+GUI 要逐行逐字去追蹤程式流向,只有一个隐约的程式模板概念:
MainWindow -->show --> 元件connect -->事件执行…无法像IDE的:点元件 --> 选事件--> 写码 --> 执行。

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章