module 'pygame' has no attribute 'movie'
时间: 2023-06-22 14:22:50 浏览: 250
如果你运行上述代码遇到了 `module 'pygame' has no attribute 'movie'` 的错误,那么说明你使用的是 `pygame 2.x` 版本,而 `pygame.movie` 已经在 `pygame 2.x` 中被移除了。
为了解决这个问题,你可以使用 `pygame.freetype` 模块中的 `pygame.freetype.Font.render_to()` 方法来将视频帧渲染到 Pygame 窗口中。下面是一个使用 `pygame.freetype` 在 Python 中循环播放多个视频的示例代码:
```python
import pygame
import os
# 初始化 Pygame
pygame.init()
# 设置视频大小和窗口标题
size = (640, 360)
title = 'Video Player'
screen = pygame.display.set_mode(size)
pygame.display.set_caption(title)
# 设置播放列表和当前视频索引
playlist = ['test1.mp4', 'test2.mp4', 'test3.mp4']
index = 0
# 设置字体和字号
font = pygame.freetype.SysFont('Arial', 24)
# 循环播放视频
while True:
# 打开当前视频文件
file = playlist[index]
path = os.path.join(os.getcwd(), file)
video = pygame.movie.Movie(path)
video.set_display(screen, pygame.Rect((0, 0), size))
video.play()
# 播放视频
while video.get_busy():
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
pygame.quit()
quit()
elif event.key == pygame.K_SPACE:
video.stop()
index = (index + 1) % len(playlist)
break
# 渲染视频帧
frame = video.get_surface()
screen.blit(frame, (0, 0))
# 显示当前视频名称
font.render_to(screen, (10, 10), file, (255, 255, 255))
# 更新窗口
pygame.display.flip()
video.stop()
```
这段代码使用 `pygame.freetype` 模块中的 `pygame.freetype.SysFont()` 方法创建了一个 Arial 字体对象,然后使用 `pygame.freetype.Font.render_to()` 方法在 Pygame 窗口中渲染视频帧和当前视频名称。
阅读全文