首页 > 解决方案 > 无法使用 blit 在 pygame 中显示图像

问题描述

我有以下代码,我尝试使用 .blit 加载两个图像:

import pygame

pygame.init()

width = 1600
height = 900
screen = pygame.display.set_mode((width, height))

attackImg = pygame.image.load('attack.png')
healImg = pygame.image.load('heal.png')
manaImg = pygame.image.load('mana.png')
moveImg = pygame.image.load('move.png')
shieldImg = pygame.image.load('shield.png')
stunImg = pygame.image.load('stun.png')


while True:
  screen.fill((255, 255, 255))
  screen.blit(healImg, (100, 800))
  screen.blit(attackImg, (200, 800))
  pygame.display.update()

运行代码时我没有收到任何错误消息,但图像不显示。图像文件可用并且它们的正确名称已被使用。我已经阅读了几个教程,并没有看到我做错了什么。如果这有什么不同的话,代码是在 repl.it 中编写和运行的。请帮助我了解为什么图像没有显示以及需要更改的内容。

标签: pythonpygame

解决方案


我复制粘贴了你的代码,首先,窗口没有出现。您的代码中没有“事件循环”。您几乎总是必须这样做,否则窗口将无法启动。您通常还可能想要创建一个running = True变量。没有它,您的程序就不可能正常关闭。下面是正确的代码:

import pygame

pygame.init()

width = 1600
height = 900
screen = pygame.display.set_mode((width, height))

attackImg = pygame.image.load('attack.png')
healImg = pygame.image.load('heal.png')

running = True
while running:
  screen.fill((255, 255, 255))
  for event in pygame.event.get(): # <--- 'event loop'
    if event.type == pygame.QUIT:
        running = False
  screen.blit(healImg, (100, 800))
  screen.blit(attackImg, (200, 800))
  pygame.display.update()

如果这不起作用,则可能只是图像相互覆盖,或者它们在视图之外被“blitted”。在这种情况下,写评论。


推荐阅读