天天看點

利用PyQt GUI顯示圖檔、實時播放視訊

---作者疆,未經允許,嚴禁轉載,違權必究---

---歡迎指正,需要源碼和檔案可站内私信聯系---

-----------點選此處連結至部落格園原文-----------

功能說明:PyQt界面程式,觸發播放按鈕實作顯示圖檔、一窗體一屏一放視訊、一窗體多屏多放視訊功能

運作環境:Windows7、Python3、PyQt5、Pycharm5.0

一、環境搭建

參考連結:PyQt5環境搭建、PyQt工具欄菜單漢化

1.PyQt5和PyQt5-tools安裝(注:PyQt5與PyQt4存在一定差別)

pip安裝指令為 pip install PyQt5和pip install PyQt5-tools

2.Pycharm中Qt Designer(用于繪畫界面)和PyUIC(将界面ui檔案轉化為py檔案供繼承)配置

Pycharm中菜單欄依此點選File----Settings----Tools----External Tools-----點選“+”号,按下圖分别添加Qt Designer、PyUIC

Program參數為“designer.exe”的全路徑,Working directory:$ProjectFileDir$

利用PyQt GUI顯示圖檔、實時播放視訊

Program參數為“python.exe”的全路徑,Arguments:-m PyQt5.uic.pyuic  $FileName$ -o $FileNameWithoutExtension$.py

利用PyQt GUI顯示圖檔、實時播放視訊

3.Qt Designer工具欄菜單漢化(英語大神可跳過此步)

下載下傳designer_zh_CN.qm将它放在你的...\Lib\site-packages\pyqt5-tools\translations檔案夾中,重新打開QT就漢化成功了

designer_zh_CN.qm的下載下傳位址為:https://pan.baidu.com/s/1jzkumqjw-3VQiJxvo4V6Xw

二、執行個體上手----實作顯示圖檔

參考連結:計算售價界面程式(隻學習其中如何繪制ui界面)、PyQt 用label控件顯示圖檔、基于Qt Designer和PyUIC開發PyQt程式的步驟

----------------上述3個部落格建議看下,可以有個初步了解,也可跳過----------------------

1.使用Qt Designer設計界面

Pycharm中頂部菜單欄依此點選Tools ----External Tools----Qt Designer,如下圖所示,選擇建立Main Window(主窗體),可在“螢幕大小”選項選擇适當大小,此時若不選擇可以後續再更改相關屬性

注:作為我們初學者,先别管main windows、Widget、Dialog的差別(之間存在繼承關系、功能略有差異)

利用PyQt GUI顯示圖檔、實時播放視訊

就像做ppt一樣開始繪制界面ui,左側為控件箱,中間為繪制視窗面闆,右側可更改視窗、控件相關屬性

本節涉及的控件主要包括label、Push Button等,隻需在控件箱将相應控件拖入面闆

利用PyQt GUI顯示圖檔、實時播放視訊

以label控件為例,拖入面闆,點選label控件,在右側一列屬性欄内編輯其屬性,一般需要改objectName(通過pythpn代碼調用這個控件的變量名,盡量取有意義的名字)、text(顯示文字)、寬度、高度等屬性

pushbotton控件同樣照此操作,得到的簡易界面如下圖所示

利用PyQt GUI顯示圖檔、實時播放視訊

儲存目前窗體(如:起名為test.ui),将自動生成xx.ui檔案(實際上是一個xml檔案,可用任何文本編輯器打開),此時,對該檔案右鍵 External Tools ----PyUIC ,“xx.ui”檔案在同目錄下被轉為“xx.py”檔案以便繼承,轉換為“xx.py”的原因是IDE能自動識别對象和函數。然後在目前目錄下建立一個.py檔案(如下圖中show_single_channel.py)。

利用PyQt GUI顯示圖檔、實時播放視訊

在該py檔案中添加如下頭檔案

利用PyQt GUI顯示圖檔、實時播放視訊

 建立一個類MyApp,繼承Ui_MainWindow類,類内添加初始化方法

利用PyQt GUI顯示圖檔、實時播放視訊

類内添加槽函數及槽函數需調用的函數等,當點選pushButton将觸發槽函數相應事件

利用PyQt GUI顯示圖檔、實時播放視訊

添加主函數

利用PyQt GUI顯示圖檔、實時播放視訊

實作效果:點選播放按鈕,螢幕顯示該圖檔

利用PyQt GUI顯示圖檔、實時播放視訊

三、執行個體上手----實作一窗體一屏一放

參考連結:BGR圖像轉換為QImage對象、QPixmap詳解    (以上部落格建議閱讀)

項目名:qt_show_single(百度雲盤備份不對外提供)

實作效果:點選播放按鈕,螢幕實時播放視訊

利用PyQt GUI顯示圖檔、實時播放視訊

與執行個體二代碼邏輯上無本質上差別,主要修改槽函數即可,修改說明可見如下截圖注釋

僅提供代碼截圖(show_single_channel.py):

利用PyQt GUI顯示圖檔、實時播放視訊
利用PyQt GUI顯示圖檔、實時播放視訊
利用PyQt GUI顯示圖檔、實時播放視訊

四、執行個體上手----實作一窗體多屏多放

項目名:qt_show_double(百度雲盤備份不對外提供)

實作效果:分别點選播放1、播放2,螢幕實時播放對應視訊。

代碼說明:按上述操作單屏能實作的話,多屏是一樣的道理,主要問題在于代碼如何寫的更精簡,由于項目要求,在此不提供參考代碼。

利用PyQt GUI顯示圖檔、實時播放視訊

五、常見報錯

1.native Qt signal is not callable

利用PyQt GUI顯示圖檔、實時播放視訊

将信号與槽函數未關聯,此處若缺少connect會導緻該錯誤發生。

2.環境的錯誤:如PyQt4與PyQt5環境不同導緻的,具體可百度解決。

利用PyQt GUI顯示圖檔、實時播放視訊