You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3.6中遍历文件名列表blit多张图片无显示问题求助

解决Pygame循环Blit图片不显示的问题

嘿,我瞅了下你的代码,问题主要出在这几个地方,咱们一步步给你捋顺:

  • 没处理系统事件:Pygame窗口必须持续处理系统事件(比如关闭窗口、鼠标操作),不然系统会判定窗口“无响应”,哪怕你调用了pygame.display.flip(),也可能看不到任何内容。
  • 循环跑得太快:你的for循环会瞬间把所有图片加载并Blit完,每张图片显示时间短到肉眼根本抓不住,看起来就像啥都没显示一样。
  • 路径正确性要确认:得检查filenames里的图片路径是不是真的对,比如相对路径有没有写错,或者对应图片文件是不是真的存在?

给你改好的代码,直接就能用:

import pandas as pd
import pygame
import time

# 初始化Pygame
pygame.init()
size = (640, 320)
pygame.display.set_caption("Data viewer")
screen = pygame.display.set_mode(size, pygame.DOUBLEBUF)
myfont = pygame.font.SysFont("monospace", 15)

# 读取数据文件
df = pd.read_csv('./result.csv')
filenames = df['File']

# 主循环替换原来的for循环,加入事件处理和显示延迟
running = True
current_img_idx = 0
total_imgs = len(filenames)

while running:
    # 处理系统事件,确保窗口正常响应
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    
    if current_img_idx < total_imgs:
        img_path = filenames.iloc[current_img_idx]
        try:
            # 加载当前图片
            img = pygame.image.load(img_path)
            # 先填充背景,避免上一张图片残留
            screen.fill((0, 0, 0))
            # 将图片绘制到屏幕
            screen.blit(img, (0, 0))
            # 更新显示
            pygame.display.flip()
            # 每张图片停留0.5秒,可根据需求调整时长
            time.sleep(0.5)
            current_img_idx += 1
        except pygame.error:
            # 捕获图片加载失败的情况,避免程序崩溃
            print(f"加载失败:{img_path} 不存在或格式错误")
            current_img_idx += 1
    else:
        # 所有图片显示完后退出循环
        running = False

# 退出Pygame
pygame.quit()

几个关键修改说明:

  1. 加入事件循环,处理窗口关闭事件,保证窗口能正常响应操作;
  2. 用while循环配合time.sleep()控制每张图片的显示时长,让你能清晰看到每一张图;
  3. 添加异常捕获,遇到路径错误的图片时会打印提示,不会直接崩掉程序;
  4. 每次绘制前填充背景,避免上一张图片的内容残留到下一张。

另外记得确认下result.csv里File列的路径,要和你的脚本运行目录对应上,比如图片在./car_images/文件夹里,那路径就得写成car_images/xxx.jpg这种格式哦。

内容的提问来源于stack exchange,提问作者nocturnal_study

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:46:52