用python代码,Qt在label中播放视频,使得视频自适应label的比例
时间: 2024-11-30 13:29:51 浏览: 73
python实现实时视频流播放代码实例
3星 · 编辑精心推荐
在Python中,使用Qt库创建一个可以自适应Label大小的视频播放控件,你可以利用`QVideoWidget`和`QMediaPlayer`组件。这里是一个简单的示例:
```python
import sys
from PyQt5.QtWidgets import QApplication, QLabel, QMainWindow, QVBoxLayout
from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent
class VideoPlayer(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Video Player")
self.setFixedSize(800, 600) # 设定窗口大小
layout = QVBoxLayout()
self.label = QLabel(self)
self.media_player = QMediaPlayer(None, QMediaPlayer.VideoSurface)
# 设置视频加载路径
video_path = "path_to_your_video.mp4" # 替换为你的视频文件路径
media_content = QMediaContent(QUrl.fromLocalFile(video_path))
# 将视频内容设置到媒体播放器
self.media_player.setMedia(media_content)
# 当视频准备好播放时,将其显示在QLabel上
self.media_player.positionChanged.connect(lambda position: self.update_label_size())
self.media_player.stateChanged.connect(self.play_video)
self.media_player.play() # 初始化并开始播放
self.label.setFrameShape(QLabel.Box) # 设置标签边框样式
self.label.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) # 自适应大小
layout.addWidget(self.label)
self.setLayout(layout)
def play_video(self, state):
if state == QMediaPlayer.PlayingState:
print("Video is playing.")
def update_label_size(self):
size_policy = self.media_player.sizePolicy()
self.label.setSizePolicy(size_policy)
if __name__ == "__main__":
app = QApplication(sys.argv)
player = VideoPlayer()
player.show()
sys.exit(app.exec_())
```
在这个例子中,当视频准备就绪并且播放时,会触发`update_label_size`方法,更新`QLabel`的大小策略使其随视频尺寸变化而调整。
阅读全文