gpt4 book ai didi

python - pygame 按键组合(ctrl + 键或 shift + 键)

转载 作者:太空狗 更新时间:2023-10-29 20:15:40 28 4
gpt4 key购买 nike

我有一些发生 keydown 事件的 python 代码,我基本上想知道是否可以同时按下两个键,比如 ctrl+a 或类似的东西。这可能吗,还是我必须找到解决方法?

最佳答案

使用pygame.key.get_mods()获取特殊键的状态,例如 ControlShift

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_LSHIFTKMOD_RSHIFT仅测试左移或仅测试右移


编辑:

顺便说一句:示例如何使用 get_pressed()

  • 你必须使用K_LSHIFTK_LSHIFT检查两个类次。
  • 如果您按住 SHIFT+A,它会一次又一次地打印“按下:SHIFT + A” .

.

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()

顺便说一句: 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_ALTKMOD_RALT .

关于python - pygame 按键组合(ctrl + 键或 shift + 键),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24923078/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com