Python Pygame没有响应!尽管调用事件并更新屏幕

Python Pygame没有响应!尽管调用事件并更新屏幕,python,pygame,pygame-surface,Python,Pygame,Pygame Surface,如果我不将它添加到类中,它将非常有效,但如果我添加了它,它将不会响应,我尝试使用pygame.update,因为pygame.event.pump/get甚至是jumbling都应该从事件开始,但问题仍然存在。我做错了什么?下面的代码 . . class start_game: def __init__(self,path,width = 400,height = 600): self.width = width self.height = height

如果我不将它添加到类中,它将非常有效,但如果我添加了它,它将不会响应,我尝试使用pygame.update,因为pygame.event.pump/get甚至是jumbling都应该从事件开始,但问题仍然存在。我做错了什么?下面的代码

.
.
class start_game:
    def __init__(self,path,width = 400,height = 600):
        self.width = width
        self.height = height
        self.head  = None
        self.running = False
        self.path   = path
        
        pygame.init()
        pygame.mixer.init()
        
        self.background = load_img(self.path + '\AnimatedStreet.png')
        self.enemy = pygame.image.load(self.path + '\Enemy.png')
        self.backg0_pos =  [0,0] 
        self.screen = pygame.display.set_mode((self.width,self.height))
         
    
    def _run(self):
        self.running = True
        
        while self.running:
            #pygame.event.pump()
            self.screen.fill([0,0,0])
            self.screen.blit(self.background, self.backg0_pos)
            
            pygame.display.flip()
            pygame.display.update()
            
            self.backg0_pos[1] += 1
   
            self._init_controls()
            
            return
    
    def _init_controls(self):
        
        for event in pygame.event.get():
            if event.type == KEYDOWN:
                if event.key == K_RIGHT:
                    self.player_pos[0] += 5

                if event.key == K_q:
                    pygame.quit()
             
        return
    
a = start_game(path)
a._run()

错误是while循环中的返回函数导致它停止。
解决方案是将return函数放在run函数中。

您的while循环在第一个循环之后结束,因为您将“return”放在循环中。这就是问题所在。另外,您应该使用flip()或update(),而不是两者都使用。您可以在应用程序中执行
返回操作loop@Starbuck5谢谢你,这样就好了,我怎么会错过呢!