无法使用pygame.image.load()查看图像

时间:2012-12-07 23:54:26

标签: python pygame

启动程序时无法看到图像。我有一个名为“game”和“mygame.py”文件夹的文件夹,其中包含“background.png”。我已经尝试使用PATH“/game/background.png”而不是“background.png”但它似乎不起作用。有任何想法吗?

我的代码:

import pygame , sys 

pygame.init()

#screen start
def screen():
    screen = [1024,768]
    screen = pygame.display.set_mode(screen,0,32)
    pygame.display.set_caption("Testing Caption")
    background = pygame.image.load("background.png")
    screen.blit(background, (0,0))


    while True:
      screen.blit(background, (0,0))
      #keyboard commands
      for event in pygame.event.get():
          if event.type == pygame.QUIT:
              pygame.quit()   


screen()  

谢谢。

3 个答案:

答案 0 :(得分:2)

您缺少翻转/更新通话:

clock = pygame.time.Clock()

while True:

  #keyboard commands
  for event in pygame.event.get():
      if event.type == pygame.QUIT:
          pygame.quit()

  screen.blit(background, (0,0))

  pygame.display.flip()

  clock.tick(40)  # keep program running at given FPS

每个blit都发生在内部缓冲区中,你需要每帧调用一次翻转或更新一次以更新真实屏幕。

答案 1 :(得分:1)

据我所知,你可以通过以下两种方式完成这项工作。

您可以使用文件的绝对路径,例如:

"C:\path_to_game_folder\game\background.png"

或者您可以使用相对路径。为此,请将以下代码添加到您的程序中:

import os
dir = os.path.dirname(__file__)
backgroundFile = os.path.join(dir, "background.png")

并改变:

pygame.image.load("background.png") 

pygame.image.load(backgroundFile)

我建议尽可能使用相对路径,使代码保持可移植性,并使其更易于维护和分发。

答案 2 :(得分:0)

我明白了!使用pygame很重要,在pygame.display.update() screen.flip中使用“while True:”不能与pygame一起刷新或更新屏幕。感谢之前回复的用户。

完整代码:

import pygame , sys

pygame.init()

#screen start
def screen():
    width , height = 1280,768
    screen = pygame.display.set_mode((width,height))
    pygame.display.set_caption("Testing Caption")
    background = pygame.image.load("background.jpg")
    screen.blit(background, (0,0))

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()

        screen.blit(background, (0,0))
        pygame.display.update()


screen()