如何将字符串变量作为Pygame类属性实现按键判断?
问题:如何通过字符串变量调用Pygame的按键常量?
原本可以正常运行的Pygame按键判断代码:
if event.key == pygame.K_LEFT: print('LEFT key pressed')
我现在想通过用户输入的字符串变量来设置游戏的左键,于是定义了这样的变量:
left_key = 'K_LEFT'
请问怎么把这个变量作为Pygame的属性来使用呢?我想实现类似下面的效果(当然下面的写法是无法运行的):
if event.key == pygame.left_key: print('LEFT key pressed')
这其实很简单,用Python内置的getattr()函数就能解决!它可以帮你根据字符串名称,动态获取模块(这里就是pygame)里对应的属性值。
具体的正确写法如下:
left_key = 'K_LEFT' # 从pygame模块中获取名为left_key对应字符串的属性 if event.key == getattr(pygame, left_key): print('LEFT key pressed')
如果担心用户输入的字符串可能是无效的按键名称(比如拼写错误导致找不到对应属性),还可以给getattr()加个默认值,避免程序报错:
left_key = 'K_LEFT' # 找不到对应属性时返回None,后续可以做判断 target_key = getattr(pygame, left_key, None) if target_key is not None and event.key == target_key: print('LEFT key pressed')
这样就能完美实现用字符串变量动态指定Pygame按键常量的需求啦!
内容的提问来源于stack exchange,提问作者Zoltan
相关产品推荐
相关产品推荐

