Events 我如何改变KMOD状态';在Pygame中只需一个键?

Events 我如何改变KMOD状态';在Pygame中只需一个键?,events,key,pygame,modifiers,Events,Key,Pygame,Modifiers,以下是到目前为止我得到的信息: for event in pygame.event.get(): if event.type == KEYDOWN: if event.key == K_LEFT: mods = pygame.key.get_mods() if mods and KMOD_SHIFT: movei = -5 if mods and KMOD_CTRL:

以下是到目前为止我得到的信息:

for event in pygame.event.get():
    if event.type == KEYDOWN:
        if event.key == K_LEFT:
            mods = pygame.key.get_mods()
            if mods and KMOD_SHIFT:
                movei = -5
            if mods and KMOD_CTRL:
                movei = -20
            else:
                movei = -10
问题是它似乎总是只拾取一个或另一个(KMOD\u SHIFT或KMDO\u CTRL),而不是选择性地拾取。因此,无论我按下哪个修改器(shift、alt、ctrl等),效果都是一样的

我想要的效果是,屏幕上的角色可以分别爬行、奔跑或行走


提前感谢。

您使用的是逻辑
运算符,而您确实需要运算符
&
。而不是

if mods and KMOD_SHIFT:
你想要

if mods & KMOD_SHIFT:

只要第一个操作数的值为真(在本例中,不等于0),逻辑
将返回第二个操作数的值。
&
运算符将执行逐位AND运算,因此只有在
mods
变量中KMOD常量的某些位打开时,才会返回非零值(逻辑上解释为true)。

您使用的是逻辑
运算符,虽然您确实需要逐位运算符
&
。而不是

if mods and KMOD_SHIFT:
你想要

if mods & KMOD_SHIFT:
只要第一个操作数的值为真(在本例中,不等于0),逻辑
将返回第二个操作数的值。
&
运算符将执行逐位AND运算,因此仅当
mods
变量中KMOD常量的某些位处于开启状态时,才会返回非零值(逻辑上解释为true)