值被正确传递,但是选择语句不能正常工作

Values are being passed correctly however selection statements do not work properly

我最近一直在尝试编写一个涉及二进制到十六进制转换的快速游戏。我已经设置了代码的一些基本结构,但我偶然发现了一个问题:即使应该正确传递值,我在游戏入口点的选择语句也没有按预期工作

我试过的:

     if event.key == pygame.K_KP_ENTER:
        print('enter')
        print(key_value)
        key_value = 1
        print(key_value)

打印出来的值是正确的,用于游戏的while循环点:

    while running:

        if EventHandler.get_key_pressed() == 1:
            print('1')

        elif EventHandler.get_key_pressed() == 2:
            print('2')
     elif event.type == pygame.KEYDOWN:
         if event.key == pygame.K_KP_ENTER:
            print('enter')
            key_value = 2

         elif event.key == pygame.K_SPACE:
            print('space')
            key_value = 1

根据我的观察,只有 while 循环之后的第一个 if 语句起作用,但是当我认为我的代码格式正确时,我不确定为什么会发生这种情况。

代码: main.py

import pygame
from Include.src.event_handler import EventHandler
    # other imports go here, not related to problem.

    # Global Variables
    running = True

    # Object creations, not really related as well
    game = Game()  # initialise pygame, settings and assets
    screen = game.get_screen()  # get screen bounds/object

    while running:

        if EventHandler.get_key_pressed() == 1: # Issue here
            print('1')

        elif EventHandler.get_key_pressed() == 2:
            print('2')


        pygame.display.flip()
        pygame.display.update()

event_handler.py

    import pygame


    class EventHandler:
        @staticmethod
        def get_key_pressed():
            key_value = 0

            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    print('Thanks for debugging me or playing idk')
                    pygame.quit()

                elif event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_KP_ENTER:
                        print('enter')
                        key_value = 1

                    elif event.key == pygame.K_SPACE:
                        print('space')
                        key_value = 2

            return key_value

预期输出

人按 space、space 并打印 2。 人按 enter,enter 并打印 1。

实际产量

Space按下,只输出space。 按下回车,同时回车,输出1。

非常感谢!

对于回顾此 post 的任何人,我找到了答案:

正如@jasonharper 所说,由于再次调用该函数,该值被抛出

     while running:
        e = EventHandler.get_key_pressed() # make it constant
        if e == 1:
            print('1')

        elif e == 2:
            print('2')