Pygame 混音器在我不想要的时候播放声音

Pygame mixer playing sounds when I don't want it to

我正在尝试制作这个使用键盘或带 joytokey 的 gh 吉他的程序。我正在尝试在您按 1、2、3、4 或 5 时设置“fret”变量。并在您按 k 或 l 时播放正确的声音。但是当我按下 1、2、3、4 或 5 时,它会播放声音。 这是代码的重要部分:

def playFret(fret):
    if fret == 1:
        pygame.mixer.Sound.play(eguitargreen)
    if fret == 2:
        pygame.mixer.Sound.play(eguitarred)
    if fret == 3:
        pygame.mixer.Sound.play(eguitaryellow)
    if fret == 4:
        pygame.mixer.Sound.play(eguitarblue)
    if fret == 5:
        pygame.mixer.Sound.play(eguitarorange)


while jamtime:
    
    for event in pygame.event.get():
        
        if event.type == pygame.QUIT: 
              jamtime = False 
        elif event.type == pygame.KEYDOWN:
    
        
            if event.key == pygame.K_x:
                jamtime = False
            if event.key == pygame.K_1:
                fret = 1
            if event.key == pygame.K_2:
                fret = 2
            if event.key == pygame.K_3:
                fret = 3
            if event.key == pygame.K_4:
                fret = 4
            if event.key == pygame.K_5:
                fret = 5
                
            if event.key == pygame.K_r or pygame.K_l:
                playFret(fret)

尝试将您的 k 和 l 键检查更改为:

if event.key == pygame.K_r or event.key == pygame.K_l:
    playFret(fret)

您的 if 语句的工作方式与您期望的不同。例如,您认为以下代码将打印什么:

num = 7

if num == 4 or 5:
  print("yup")
else:
  print("nope")

输出:

yup