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 (顯示影片)
結論心得: