python中Pyqt5使用Qlabel標(biāo)簽進(jìn)行視頻播放
Pyqt5安裝并配置到pycharm方法:教你如何用pycharm安裝pyqt5及其相關(guān)配置
一、簡介
QLabel是界面中的標(biāo)簽類,繼承自QFrame類,提供文本和圖像的顯示,是一種展示控件。
QLabel對(duì)象可以顯示不可編輯的文本或圖片,可以放置一個(gè)GIF動(dòng)畫,還可以被用作提示標(biāo)記為其他控件。
純文本、鏈接或富文本也可以顯示在標(biāo)簽上。
二、基本用法
2.1 QLabel控件
setAlignment()
:按固定值方式對(duì)齊文本,有以下對(duì)齊方式:
Qt.AlignLeft(水平方向靠左對(duì)齊) 、Qt.AlignRight(水平方向靠右對(duì)齊)、Qt.AlignCenter(水平方向居中對(duì)齊)、Qt.AlignJustify(水平方向調(diào)整間距兩端對(duì)齊)、Qt.AlignTop(垂直方向靠上對(duì)齊)、Qt.AlignBottom(垂直方向靠下對(duì)齊)、Qt.AlignVCenter(垂直方向居中對(duì)齊)
- setIndent():設(shè)置文本縮進(jìn)
- setPixmap():設(shè)置QLabel為一個(gè)Pixmap圖片
- text():獲得QLabel的文本內(nèi)容
- setText():設(shè)置QLabel的文本內(nèi)容
- selectedText():返回所選擇的字符
- setBuddy():設(shè)置伙伴關(guān)系
- setWordWrap():設(shè)置是否允許換行
2.2 QLabel常用的信號(hào)(事件)
1.linkHovered:當(dāng)鼠標(biāo)指針滑過標(biāo)簽中嵌入的超鏈接時(shí),需要用槽函數(shù)與這個(gè)信號(hào)進(jìn)行綁定
2.linkActivated:當(dāng)單擊標(biāo)簽中嵌入的超鏈接,希望在新窗口中打開這個(gè)超鏈接時(shí),setOpenExternalLinks特性必須設(shè)置為true
三、QLabel播放視頻
使用QLabel播放視頻文件的重點(diǎn)就在****定時(shí)器QTimer
當(dāng)程序中需要顯示時(shí)間時(shí)或者需要在程序中周期性地進(jìn)行某項(xiàng)操作,就會(huì)用到定時(shí)器
3.1 QTimer
導(dǎo)入QTimer模塊:
from PyQt5.QtCore import QTimer
初始化:
self.timer_camera = QTimer()
計(jì)時(shí)并啟動(dòng):
self.timer_camera.start(1000) # 1000ms == 1s self.timer_camera.timeout.connect(self.openFrame) # 連接槽函數(shù)openFrame
注意:當(dāng)QTimer的父對(duì)象被銷毀時(shí),它也會(huì)被自動(dòng)銷毀。
3.2 代碼
UI界面:
?
python程序:
from PyQt5.QtGui import * from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.uic import loadUiType import cv2 import sys vedio_ui, _ = loadUiType('./UI/vedio.ui') class VedioGui(QMainWindow, vedio_ui): # 定義構(gòu)造方法 def __init__(self): QMainWindow.__init__(self) self.setupUi(self) self.timer_camera = QTimer() self.handle_buttons() self.open_vedio() # 所有Button的消息與槽的通信 def handle_buttons(self): self.btn_Start.clicked.connect(self.Btn_Start) self.btn_Stop.clicked.connect(self.Btn_Stop) def Btn_Start(self): # 定時(shí)器開啟,每隔一段時(shí)間,讀取一幀 self.timer_camera.start(100) self.timer_camera.timeout.connect(self.OpenFrame) def Btn_Stop(self): # self.cap.release() self.timer_camera.stop() def open_vedio(self): """選取視頻文件""" # 這里以mp4和avi視頻播放為例 openfile_name = QFileDialog.getOpenFileName(self, 'chose files', '', 'Image files(*.mp4 *.avi)') # 打開文件選擇框選擇文件 self.file_name = openfile_name[0] # 獲取圖片名稱 # 得到文件后綴名 需要根據(jù)情況進(jìn)行修改 suffix = self.file_name.split("/")[-1][self.file_name.split("/")[-1].index(".") + 1:] # print(self.file_name, suffix) if self.file_name == '': pass elif suffix == "mp4" or suffix == "avi": self.cap = cv2.VideoCapture(self.file_name) def OpenFrame(self): ret, image = self.cap.read() if ret: if len(image.shape) == 3: image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) vedio_img = QImage(image.data, image.shape[1], image.shape[0], QImage.Format_RGB888) elif len(image.shape) == 1: vedio_img = QImage(image.data, image.shape[1], image.shape[0], QImage.Format_Indexed8) else: vedio_img = QImage(image.data, image.shape[1], image.shape[0], QImage.Format_RGB888) self.vedio_label.setPixmap(QPixmap(vedio_img)) self.vedio_label.setScaledContents(True) # 自適應(yīng)窗口 else: self.cap.release() self.timer_camera.stop() # 界面關(guān)閉事件,詢問用戶是否關(guān)閉 def closeEvent(self, event): reply = QMessageBox.question(self, '退出', "是否要退出該界面?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if reply == QMessageBox.Yes: self.close() event.accept() else: event.ignore() if __name__ == "__main__": app = QApplication(sys.argv) window = VedioGui() window.show() sys.exit(app.exec_())
視頻播放成功顯示:
?
注:視頻播放沒有聲音
到此這篇關(guān)于python中Pyqt5使用Qlabel實(shí)現(xiàn)標(biāo)簽進(jìn)行視頻播放的文章就介紹到這了,更多相關(guān)Qlabel實(shí)現(xiàn)視頻播放內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一起來學(xué)習(xí)一下python的數(shù)據(jù)類型
這篇文章主要為大家詳細(xì)介紹了python的數(shù)據(jù)類型,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下希望能夠給你帶來幫助2022-01-01Python使用PyQt5實(shí)現(xiàn)中英文切換功能
在Python中使用PyQt5實(shí)現(xiàn)應(yīng)用程序的中英文切換功能,可以通過國際化(i18n)和本地化(l10n)的技術(shù)來實(shí)現(xiàn),以下是一個(gè)詳細(xì)的教程,包括UI界面多語言切換和程序內(nèi)部字符串多語言切換兩部分,需要的朋友可以參考下2024-12-12Python字符串中出現(xiàn)的次數(shù)統(tǒng)計(jì)多種方法
這篇文章主要介紹了Python字符串中出現(xiàn)的次數(shù)統(tǒng)計(jì)多種方法,使用內(nèi)置的count()方法、正則表達(dá)式、列表推導(dǎo)式、循環(huán)和條件判斷以及字符串分割,每種方法都有其適用的場景和優(yōu)缺點(diǎn),選擇合適的方法取決于具體的需求和場景,需要的朋友可以參考下2024-12-12python機(jī)器學(xué)習(xí)基礎(chǔ)特征工程算法詳解
這篇文章主要為大家介紹了python機(jī)器學(xué)習(xí)基礎(chǔ)特征工程的算法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2021-11-11pyqt QGraphicsView 以鼠標(biāo)為中心進(jìn)行縮放功能實(shí)現(xiàn)
在PyQt開發(fā)中,實(shí)現(xiàn)QGraphicsView的鼠標(biāo)中心縮放功能需要注意初始化以及關(guān)鍵函數(shù)的重定義,遇到不達(dá)預(yù)期的效果時(shí),可能需要重寫所有鼠標(biāo)事件,本文記錄了解決QGraphicsView鼠標(biāo)縮放問題的過程,供開發(fā)者參考2024-10-10python3 實(shí)現(xiàn)的對(duì)象與json相互轉(zhuǎn)換操作示例
這篇文章主要介紹了python3 實(shí)現(xiàn)的對(duì)象與json相互轉(zhuǎn)換操作,結(jié)合實(shí)例形式分析了Python3使用json模塊針對(duì)json格式數(shù)據(jù)轉(zhuǎn)換操作的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-08-08