我正在尝试编写一个 python/pygame 程序来简单地显示文本。我希望它能够工作,这样当您输入例如字母“A”时,它会出现在屏幕上(有点像 gedit/notepad/whatever)。我通过将字母附加到字符串中来实现这一点,然后该字符串被渲染并放到屏幕上。但是,我在实际获取用户输入方面遇到了问题。我知道有 pygame.key.get_pressed() 函数,但我只能在您真正知道您希望用户按下哪个键(例如 W 向前)的情况下弄清楚如何使用它,但如果我不知道,就无法使用它。如果这令人困惑,以下是我的代码:
import pygame
import sys
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((600,500))
myfont = pygame.font.Font(None, 60)
inp = ""
while True:
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
keys = pygame.key.get_pressed()
inp = inp + #THE PRESSED KEY
screen.fill((0,0,200))
txt = myfont.render(inp, True, (255,255,255))
screen.blit(txt, (100,100))
pygame.display.update()
我想弄清楚如何将“按下的键”附加到字符串中。
答案1
您可以KEYDOWN
为此使用该事件,因为pygame.key.get_pressed()
它将以当前 FPS 的速度为您提供结果。
以下是根据您的代码修改后的工作示例:
import pygame
import sys
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((600,500))
myfont = pygame.font.Font(None, 60)
inp = ""
while True:
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
if event.type == pygame.KEYDOWN:
inp += event.unicode
screen.fill((0,0,200))
txt = myfont.render(inp, True, (255,255,255))
screen.blit(txt, (100,100))
pygame.display.update()
只改变了这一点:
- 删除了你的
pygame.key.get_pressed()
来电 - 添加了
pygame.KEYDOWN
事件检查