Python Pygame没有检测到按下了什么键,工作正常

Python Pygame没有检测到按下了什么键,工作正常,python,pygame,Python,Pygame,下面是一段代码,它应该在按下空格键时进行检测 for event in pygame.event.get(): if event.type == pygame.KEYDOWN: if event.key == pygame.K_SPACE: part = 3 它在其他项目中运行良好,但现在几乎检测不到按键。它有时会检测到,但这种情况很少见。我知道我可以使用pygame.key.get_pressed(),但只要按住空格键,它就会返回True,这

下面是一段代码,它应该在按下空格键时进行检测

for event in pygame.event.get():
    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_SPACE:
             part = 3
它在其他项目中运行良好,但现在几乎检测不到按键。它有时会检测到,但这种情况很少见。我知道我可以使用
pygame.key.get_pressed()
,但只要按住空格键,它就会返回True,这不是我想要的

完整代码:请原谅没有评论

导入pygame、sys、math、random
从pygame.locals导入*
从pygame.mixer导入*
def main():
display=pygame.display.set_模式((1600900),全屏)
tv=pygame.image.load(“tv.png”)
tv=pygame.transform.scale(tv,(1600900))
bg1=pygame.image.load(“bg.png”)
bg2=pygame.image.load(“bg2.png”)
swiperPos=False
pygame.mixer.init()
startmusic=pygame.mixer.Sound(“introsong.mp3”)
pygame.mixer.Channel(0.play)(开始音乐,循环=1000)
部分=0
pygame.font.init()
arial=pygame.font.SysFont(“arial”,41)
georgia=pygame.font.SysFont(“georgia”,41)
arialsmall=pygame.font.SysFont(“arial”,20)
georgiasmall=pygame.font.SysFont(“格鲁吉亚”,20)
vhsEffect=True
oldMousePressed=[假,假,假]
尽管如此:
显示.填充((0,0251))
mousePos=pygame.mouse.get_pos()
鼠标按下=[假,假,假]
rawMousePressed=[pygame.mouse.get_pressed(3)[0],pygame.mouse.get_pressed(3)[1],pygame.mouse.get_pressed(3)[2]]
如果rawMousePressed[0]而不是oldMousePressed[0]:mousePressed[0]=True
如果rawMousePressed[1]而不是oldMousePressed[1]:mousePressed[1]=True
如果rawMousePressed[2]而不是oldMousePressed[2]:mousePressed[2]=True
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
退出
sys.exit()
如果部分==0:
显示blit(bg1,(0,0))
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
退出
sys.exit()
如果鼠标按下[0]:
如果鼠标点[0]>406,鼠标点[0]<580,鼠标点[1]>540,鼠标点[1]<564:
部分=2
elif mousePos[0]>951和mousePos[0]<1131以及mousePos[1]>540和mousePos[1]<564:
部分=1
如果零件==1:
显示blit(bg2,(0,0))
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
退出
sys.exit()
如果鼠标按下[0]:
如果鼠标点[0]>557,鼠标点[0]<940,鼠标点[1]>207,鼠标点[1]<240:
如果vhsEffect:
vhsEffect=False
其他:
vhsEffect=True
elif mousePos[0]>700和mousePos[0]<754以及mousePos[1]>651和mousePos[1]<670:
部分=0
text=georgia.render(f“VHS效果:{vhsEffect}”,真,(251))
显示.blit(文本,(561201))
如果零件==2:
text=georgia.render(“迈克:杰克,你想去露营吗?”,False,(251))
显示.blit(文本,(401201))
text=georgiasall.render(“按空格键继续”,False,(251,251))
显示.blit(文本,(601701))
对于pygame.event.get()中的事件:
如果event.type==pygame.KEYDOWN:
如果event.key==pygame.K_空间:
部分=3
如果零件==3:
text=georgia.render(“迈克:杰克,你想去露营吗?”,False,(251))
显示.blit(文本,(401201))
text=georgia.render(“杰克:当然,伙计,什么公园?”,假,(251,251,251))
显示.blit(文本,(401301))
text=georgiasall.render(“按空格键继续”,False,(251,251))
显示.blit(文本,(601701))
对于pygame.event.get()中的事件:
如果event.type==pygame.KEYDOWN:
如果event.key==pygame.K_空间:
第4部分
text=arial.render(f“MOUSEPOS:{MOUSEPOS}”,True,(251))
显示.blit(文本,(541,51))
#后遗症
如果vhsEffect:
整数=随机。随机范围(0200)
如果整数==1且不是swiperPos:
swiperPos=1
如果swiperPos!=错误:
对于范围(1600)内的x:
颜色=显示。在((x,swiperPos))处获取
pygame.draw.line(显示,彩色,(x,swiperPos),(x,swiperPos+80),1)
swiperPos+=8
如果swiperPos>890:
swiperPos=False
pick=False
对于范围(501)内的i:
surface=pygame.surface([1600,2],pygame.SRCALPHA)
整数=随机。随机范围(08000)
如果整数==1:
surface=pygame.surface([1600,2])
表面填充((251))
其他:
如果没有选择:
表面。设置α(70)
表面填充((251))
pick=True
其他:
表面。设置α(70)
表面填充((0,0,0))
pick=False
显示blit(表面,(0,i*2))
显示blit(电视,(0,0))
oldMousePressed=rawMousePressed
pygame.display.update()
main()
获取所有消息并将其从队列中删除。请参阅文档:

这将获取所有消息并将它们从队列中删除。[……]

如果在多个事件循环中调用了
pygame.event.get()
,则只有一个循环接收事件,但并非所有循环都接收所有事件。作为结果
import pygame,sys,math,random
from pygame.locals import *

from pygame.mixer import *


def main():

    display = pygame.display.set_mode((1600,900),FULLSCREEN)
    tv = pygame.image.load("tv.png")
    tv = pygame.transform.scale(tv,(1600,900))
    bg1 = pygame.image.load("bg.png")
    bg2 = pygame.image.load("bg2.png")


    swiperPos = False
    pygame.mixer.init()
    startmusic = pygame.mixer.Sound("introsong.mp3")
    pygame.mixer.Channel(0).play(startmusic,loops = 1000)
    part = 0
    pygame.font.init()
    arial = pygame.font.SysFont("arial",41)
    georgia = pygame.font.SysFont("georgia",41)
    arialsmall = pygame.font.SysFont("arial", 20)
    georgiasmall = pygame.font.SysFont("georgia", 20)
    vhsEffect = True
    oldMousePressed = [False,False,False]

    while True:
        display.fill((0,0,251))
        mousePos = pygame.mouse.get_pos()
        mousePressed = [False,False,False]
        rawMousePressed = [pygame.mouse.get_pressed(3)[0],pygame.mouse.get_pressed(3)[1],pygame.mouse.get_pressed(3)[2]]
        if rawMousePressed[0] and not oldMousePressed[0]: mousePressed[0] = True
        if rawMousePressed[1] and not oldMousePressed[1]: mousePressed[1] = True
        if rawMousePressed[2] and not oldMousePressed[2]: mousePressed[2] = True
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                quit()

                sys.exit()
        if part == 0:
            display.blit(bg1,(0,0))

            for event in pygame.event.get():

                if event.type == pygame.QUIT:
                    quit()
                    sys.exit()
            if mousePressed[0]:
                if mousePos[0] > 406 and mousePos[0] < 580 and mousePos[1] > 540 and mousePos[1] < 564:

                    part = 2
                elif mousePos[0] > 951 and mousePos[0] < 1131 and mousePos[1] > 540 and mousePos[1] < 564:

                    part = 1
        if part == 1:
            display.blit(bg2,(0,0))
            for event in pygame.event.get():

                if event.type == pygame.QUIT:
                    quit()
                    sys.exit()

            if mousePressed[0]:

                if mousePos[0] > 557 and mousePos[0] < 940 and mousePos[1] > 207 and mousePos[1] < 240:
                    if vhsEffect:
                        vhsEffect = False
                    else:
                        vhsEffect = True
                elif mousePos[0] > 700 and mousePos[0] < 754 and mousePos[1] > 651 and mousePos[1] < 670:
                    part = 0
            text = georgia.render(f"VHS EFFECTS: {vhsEffect}",True,(251,251,251))
            display.blit(text,(561,201))
        if part == 2:
            text = georgia.render("MIKE: Jake, do you want to go camping?",False,(251,251,251))
            display.blit(text,(401,201))
            text = georgiasmall.render("PRESS SPACE TO CONTINUE", False, (251, 251, 251))
            display.blit(text, (601, 701))
            for event in pygame.event.get():
                if event.type == pygame.KEYDOWN:
                     if event.key == pygame.K_SPACE:
                           part = 3
        if part == 3:
            text = georgia.render("MIKE: Jake, do you want to go camping?",False,(251,251,251))
            display.blit(text,(401,201))
            text = georgia.render("JAKE: Sure dude, what park?", False, (251, 251, 251))
            display.blit(text, (401, 301))
            text = georgiasmall.render("PRESS SPACE TO CONTINUE", False, (251, 251, 251))
            display.blit(text, (601, 701))
            for event in pygame.event.get():
                if event.type == pygame.KEYDOWN:
                     if event.key == pygame.K_SPACE:
                          part = 4
        text = arial.render(f"MOUSEPOS:{mousePos}",True,(251,251,251))

        display.blit(text,(541,51))






        # AFTER EFFECTS
        if vhsEffect:
            integer = random.randrange(0,200)
            if integer == 1 and not swiperPos:

                swiperPos = 1
            if swiperPos != False:
                for x in range(1600):
                    colour = display.get_at((x,swiperPos))
                    pygame.draw.line(display,colour,(x,swiperPos),(x,swiperPos + 80),1)
                swiperPos += 8
                if swiperPos > 890:
                    swiperPos = False
            pick = False
            for i in range(501):
                surface = pygame.Surface([1600, 2], pygame.SRCALPHA)
                integer = random.randrange(0,8000)
                if integer == 1:

                    surface = pygame.Surface([1600,2])
                    surface.fill((251,251,251))
                else:
                    if not pick:
                        surface.set_alpha(70)
                        surface.fill((251,251,251))
                        pick = True
                    else:
                        surface.set_alpha(70)
                        surface.fill((0,0,0))
                        pick = False
                display.blit(surface,(0,i * 2))
            display.blit(tv,(0,0))
        oldMousePressed = rawMousePressed

        pygame.display.update()
main()