Skip to main content
 首页 » 编程设计

python之pygame 不会 blit 内部函数吗

2025年05月04日17softidea

我有一段代码可以在函数外部运行,但不能在函数内部运行。

我还确保必要的变量是全局的。

我可以在函数内部使用 chair.get_width() 获取表面的宽度,它工作正常,但我无法执行 screen.blit(chair, (10,10) ) 出于某种原因。我没有收到错误,它只是什么也没做...

这是我的脚本(它创建一个窗口,然后每 100 毫秒调用一个函数来获取鼠标位置,将图像旋转 x 度,然后将图像 blit(或应该 blit)到窗口):

    cif = "images/chair3.png" 
 
    import pygame, sys 
    from pygame.locals import * 
 
    pygame.init() 
 
    screen = pygame.display.set_mode((640,480),0,32) 
 
    chair = pygame.image.load(cif).convert_alpha() 
 
    pygame.time.set_timer(USEREVENT + 1, 100) 
 
    def cursor(speed): 
        global i 
        global chair 
                    global screen 
        x,y = pygame.mouse.get_pos() 
        x -= chair.get_width()/2 
        y -= chair.get_height()/2 
 
        if i < 360: 
            i = i + 360/(1000/speed) 
        else: 
            i = 0 
 
        orig_chair_rect = chair.get_rect() 
        chair1 = pygame.transform.rotate(chair, i); 
        rot_chair_rect = orig_chair_rect.copy() 
        rot_chair_rect.center = chair1.get_rect().center 
        chair1 = chair1.subsurface(rot_chair_rect).copy() 
 
        print chair.get_width() 
 
        screen.blit(chair1,(x,y)) 
 
    while True: 
        for event in pygame.event.get(): 
            if event.type == QUIT: 
                pygame.quit() 
                sys.exit() 
            if event.type == USEREVENT + 1: 
                cursor(50) 

请您参考如下方法:

您确实需要使用 pygame.display.flip() 或 pygame.display.update(),否则屏幕永远不会更新,并且因此你的椅子不会被 blit 到屏幕上。

试过了,有效。如果它对您不起作用,请重新安装 Pygame,然后重试。