Python PyGame中Card1.png图片加载缩放后仍无法显示问题求助
问题原因分析
- 核心问题是屏幕更新顺序错误:你在
background()函数中提前调用了pygame.display.flip()将背景绘制结果更新到屏幕,之后执行的卡片绘制screen.blit(Card1Img, (0,0))只写入了后台缓冲区,没有被同步到实际显示的画面中,因此看不到图片。 - 次要优化点:不需要在每次事件循环中重复调用
title()设置窗口标题,放在循环外执行一次即可;背景绘制的矩形尺寸无需设置为2000*3000,和窗口尺寸一致即可。 - 额外注意:代码缺失
pygame.init()初始化操作,部分运行环境下会导致资源加载异常。
修正后的完整代码
import pygame import sys def title(title): pygame.display.set_caption(title) def background(Color1, Color2, Color3): pygame.draw.rect(screen, (Color1, Color2, Color3), pygame.Rect(0, 0, 1280, 720)) # 初始化pygame pygame.init() screen = pygame.display.set_mode((1280, 720)) # 窗口标题仅需设置一次 title("Card-Jitsu") # 加载并缩放卡片图片 Card1Img = pygame.image.load('Card1.png') Card1Img = pygame.transform.scale(Card1Img, (100,100)) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit(0) # 先执行所有绘制逻辑 background(255, 255, 255) screen.blit(Card1Img, (0, 0)) # 所有绘制完成后统一更新屏幕 pygame.display.flip()
如果修改后仍加载失败,可以检查Card1.png是否和当前运行的Python文件在同一个文件夹下,也可以替换为文件的绝对路径确认位置正确性。
内容的提问来源于stack exchange,提问作者Simpfey
相关产品推荐
相关产品推荐

