Python 我的播放器移动不正确,当按下键时,它应该继续移动,但只移动一次

Python 我的播放器移动不正确,当按下键时,它应该继续移动,但只移动一次,python,pygame,Python,Pygame,我试图用pygame写一些简单的东西,但这是我不理解的。 我试图添加移动,但它不是连续的。我按住钥匙,但钥匙只经过1次更换 import pygame, sys from pygame.locals import * pygame.init() gDis=pygame.display.set_mode((400,300)) Black=(0,0,0) White=(255,255,255) Red=(255,0,0) Blue=(0,0,255) Silver=(192,192,192)

我试图用pygame写一些简单的东西,但这是我不理解的。 我试图添加移动,但它不是连续的。我按住钥匙,但钥匙只经过1次更换

import pygame, sys
from pygame.locals import *

pygame.init()
gDis=pygame.display.set_mode((400,300))

Black=(0,0,0)
White=(255,255,255)
Red=(255,0,0)
Blue=(0,0,255)
Silver=(192,192,192)

clock=pygame.time.Clock()
x=195
y=270
wid=20
hght=20
speed=5

x_change=0
y_change=0
left=False
while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        if event.type == pygame.KEYDOWN:
            if event.key == K_LEFT:
                x_change-=5
            

                
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                            x_change=0

        x+=x_change

        gDis.fill(Black)

        pygame.draw.rect(gDis, Silver, (x, y, wid, hght))
        clock.tick(60)

    
    pygame.display.update()
这是个问题。您必须在应用程序循环而不是事件循环中移动和绘制播放器:

为True时:
对于pygame.event.get()中的事件:
如果event.type==退出:
pygame.quit()
sys.exit()
如果event.type==pygame.KEYDOWN:
如果event.key==K_LEFT:
x_变化=-5
如果event.type==pygame.KEYUP:
如果event.key==pygame.K_左或event.key==pygame.K_右:
x_变化=0
#压痕
#谢谢男人:),我不知道我怎么没看到。