Skip to main content
 首页 » 编程设计

python之PyGame:我的图像没有出现

2025年05月04日10me-sa

我写了一段代码,我试图让我的图像出现在中心,但是当我运行它时,图像根本没有出现,知道我哪里出错了吗?

(顺便说一句,我测试了不同的代码并且图像加载正常,所以 python 或 pygame 本身没有任何问题)

from __future__ import division 
import math 
import sys 
import pygame 
 
 
class MyGame(object): 
    def __init__(self): 
        pygame.mixer.init() 
        pygame.mixer.pre_init(44100, -16, 2, 2048) 
        pygame.init() 
 
        self.width = 800 
        self.height = 600 
        self.screen = pygame.display.set_mode((self.width, self.height)) 
 
        self.bg_color = 0, 0, 0 
 
        self.alien_img = pygame.image.load('alien.png') 
        self.alien_pos = ((self.width-rect.width)//4, 
                          (self.height-rect.height)//4) 
 
 
        self.FPS = 30 
        self.REFRESH = pygame.USEREVENT+1 
        pygame.time.set_timer(self.REFRESH, 1000//self.FPS) 
 
 
    def run(self): 
        running = True 
        while running: 
            event = pygame.event.wait() 
 
            if event.type == pygame.QUIT: 
                running = False 
 
            elif event.type == self.REFRESH: 
                self.draw() 
 
            else: 
                pass # an event type we don't handle             
 
    def draw(self): 
        self.screen.fill(self.bg_color) 
 
        rect = self.alien_img.get_rect() 
        rect = rect.move(self.alien_pos) 
        self.screen.blit(self.alien_img, rect) 
 
        pygame.display.flip() 
 
 
MyGame().run() 
pygame.quit() 
sys.exit() 

请您参考如下方法:

你需要移动:

rect = self.alien_img.get_rect() 

到以下行之前的初始化:

self.alien_pos = ((self.width-rect.width)//4, 
                      (self.height-rect.height)//4) 

之后:

self.alien_img = pygame.image.load('alien.png') 

以下是您的代码,其中包含将图片放入框架中的更改:

from __future__ import division 
import math 
import sys 
import pygame 
 
 
class MyGame(object): 
    def __init__(self): 
        pygame.mixer.init() 
        pygame.mixer.pre_init(44100, -16, 2, 2048) 
        pygame.init() 
 
        self.width = 800 
        self.height = 600 
        self.screen = pygame.display.set_mode((self.width, self.height)) 
 
        self.bg_color = 0, 0, 0 
 
        self.alien_img = pygame.image.load('alien.png') 
        rect = self.alien_img.get_rect() 
        self.alien_pos = ((self.width-rect.width)//4, 
                          (self.height-rect.height)//4) 
        self.FPS = 30 
        self.REFRESH = pygame.USEREVENT+1 
        pygame.time.set_timer(self.REFRESH, 1000//self.FPS) 
 
 
    def run(self): 
        running = True 
        while running: 
            event = pygame.event.wait() 
 
            if event.type == pygame.QUIT: 
                running = False 
 
            elif event.type == self.REFRESH: 
                self.draw() 
 
            else: 
                pass # an event type we don't handle             
 
    def draw(self): 
        self.screen.fill(self.bg_color) 
 
        rect = self.alien_img.get_rect() 
        rect = rect.move(self.alien_pos) 
        self.screen.blit(self.alien_img, rect) 
 
        pygame.display.flip() 
 
 
MyGame().run() 
pygame.quit() 
sys.exit() 

在你尝试访问 rect 之前,它还没有被定义。我添加了下面创建的窗口的图片:

将指出您将这张照片放在中间的计划无法实现,您需要更改:

self.alien_pos = ((self.width-rect.width)//4, 
                      (self.height-rect.height)//4) 

收件人:

self.alien_pos = (self.width//2 - rect.width//2, 
                  self.height//2 - rect.height//2) 

它给出了所需的结果: