我有一些发生keydown事件的python代码,我基本上想知道是否可以一次按下两个键,例如ctrl + a或类似的东西。这可能吗,还是我必须找到解决方法?
最佳答案
使用pygame.key.get_mods()来获取特殊键的状态,例如Control或Shift。get_mods()
给出一个整数,您必须使用按位运算符将其与诸如KMOD_SHIFT
的常量进行比较
请参阅文档:pygame.key
编辑:示例
import pygame
import pygame.locals
pygame.init()
screen = pygame.display.set_mode((300,200))
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
running = False
elif event.key == pygame.K_a and pygame.key.get_mods() & pygame.KMOD_SHIFT:
print "pressed: SHIFT + A"
pygame.quit()
顺便说一句:您可以使用
KMOD_LSHIFT
或KMOD_RSHIFT
仅测试左移或仅右移。编辑:
顺便说一句:示例如何使用
get_pressed()
K_LSHIFT
和K_LSHIFT
来检查这两个类次。 。
import pygame
import pygame.locals
pygame.init()
screen = pygame.display.set_mode((300,200))
running = True
while running:
#
# events
#
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
running = False
#
# others
#
all_keys = pygame.key.get_pressed()
#print 'shift:', all_keys[pygame.K_LSHIFT], all_keys[pygame.K_RSHIFT]
if all_keys[pygame.K_a] and (all_keys[pygame.K_LSHIFT] or all_keys[pygame.K_RSHIFT]):
print "pressed: SHIFT + A"
pygame.quit()
BTW:仅当以前使用
get_pressed()
时, get_mods()
和pygame.event.get()
才会提供实际信息。编辑:
如何识别A,CTRL + A,SHIFT + A,ALT + A,CTRL + SHIFT + A,CTRL + ALT + A,SHIFT + ALT + A 、、 CTRL + SHIFT + ALT + A
import pygame
import pygame.locals
pygame.init()
screen = pygame.display.set_mode((300,200))
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
running = False
elif event.key == pygame.K_a:
mods = pygame.key.get_mods()
if mods & pygame.KMOD_CTRL and mods & pygame.KMOD_SHIFT and mods & pygame.KMOD_ALT:
print "pressed: CTRL+SHIFT+ALT + A"
elif mods & pygame.KMOD_CTRL and mods & pygame.KMOD_SHIFT:
print "pressed: CTRL+SHIFT + A"
elif mods & pygame.KMOD_CTRL and mods & pygame.KMOD_ALT:
print "pressed: CTRL+ALT + A"
elif mods & pygame.KMOD_SHIFT and mods & pygame.KMOD_ALT:
print "pressed: SHIFT+ALT + A"
elif mods & pygame.KMOD_SHIFT:
print "pressed: SHIFT + A"
elif mods & pygame.KMOD_CTRL:
print "pressed: CTRL + A"
elif mods & pygame.KMOD_ALT:
print "pressed: ALT + A"
else:
print "pressed: A"
pygame.quit()
顺便说一句:在我的计算机上,Right Alt有问题,因为它用于 native 字符。它不适用于
KMOD_ALT
和KMOD_RALT
。关于Python按键组合(Ctrl +键或Shift +键),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24923078/