在 Pygame 中键入而不是实际键中的数字
Keys in Pygame instead of numbers in the actual key
我想创建一个菜单点,我可以在其中更改热键并显示使用的热键,但是当我将它们放入变量中时,输出为数字。我想在按如下键时设置变量:
if event.key == pygame.K_d:
varibleright = d
我必须对所有键都这样做,有更好的方法吗?还是我应该对所有键都这样做?
KEYDOWN
和 KEYUP
事件提供 unicode
属性(参见 pygame.event
module). The unicode
attribute provides the Unicode representation of the keyboard input. A user friendly name of a key can be get by pygame.key.name()
:
if event.type == pygame.KEYDOWN:
print(event.unicode)
print(pygame.key.name(event.key))
您可以使用函数将键与 unicode 字符或字符串进行比较:
if event.type == pygame.KEYDOWN:
if event.unicode == 'a':
print('a')
if event.type == pygame.KEYDOWN:
if pygame.key.name(event.key) == 'd':
print('d')
if pygame.key.name(event.key) == 'right':
print('right')
这允许您为键定义变量
key_up = 'up'
key_down = 'down'
if event.type == pygame.KEYDOWN:
if pygame.key.name(event.key) == key_up:
print('move up')
if pygame.key.name(event.key) == key_down:
print('move down')
最小示例:
import pygame
pygame.init()
window = pygame.display.set_mode((400, 400))
clock = pygame.time.Clock()
rect = pygame.Rect(190, 190, 20, 20)
key_left = 'left'
key_right = 'right'
key_up = 'up'
key_down = 'down'
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == pygame.KEYDOWN:
if event.type == pygame.KEYDOWN:
if pygame.key.name(event.key) == key_left:
rect.x -= 20
if pygame.key.name(event.key) == key_right:
rect.x += 20
if pygame.key.name(event.key) == key_up:
rect.y -= 20
if pygame.key.name(event.key) == key_down:
rect.y += 20
window.fill(0)
pygame.draw.rect(window, 'red', rect)
pygame.display.flip()
clock.tick(60)
pygame.quit()
exit()
我想创建一个菜单点,我可以在其中更改热键并显示使用的热键,但是当我将它们放入变量中时,输出为数字。我想在按如下键时设置变量:
if event.key == pygame.K_d:
varibleright = d
我必须对所有键都这样做,有更好的方法吗?还是我应该对所有键都这样做?
KEYDOWN
和 KEYUP
事件提供 unicode
属性(参见 pygame.event
module). The unicode
attribute provides the Unicode representation of the keyboard input. A user friendly name of a key can be get by pygame.key.name()
:
if event.type == pygame.KEYDOWN:
print(event.unicode)
print(pygame.key.name(event.key))
您可以使用函数将键与 unicode 字符或字符串进行比较:
if event.type == pygame.KEYDOWN:
if event.unicode == 'a':
print('a')
if event.type == pygame.KEYDOWN:
if pygame.key.name(event.key) == 'd':
print('d')
if pygame.key.name(event.key) == 'right':
print('right')
这允许您为键定义变量
key_up = 'up'
key_down = 'down'
if event.type == pygame.KEYDOWN:
if pygame.key.name(event.key) == key_up:
print('move up')
if pygame.key.name(event.key) == key_down:
print('move down')
最小示例:
import pygame
pygame.init()
window = pygame.display.set_mode((400, 400))
clock = pygame.time.Clock()
rect = pygame.Rect(190, 190, 20, 20)
key_left = 'left'
key_right = 'right'
key_up = 'up'
key_down = 'down'
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == pygame.KEYDOWN:
if event.type == pygame.KEYDOWN:
if pygame.key.name(event.key) == key_left:
rect.x -= 20
if pygame.key.name(event.key) == key_right:
rect.x += 20
if pygame.key.name(event.key) == key_up:
rect.y -= 20
if pygame.key.name(event.key) == key_down:
rect.y += 20
window.fill(0)
pygame.draw.rect(window, 'red', rect)
pygame.display.flip()
clock.tick(60)
pygame.quit()
exit()