Processamento de texto Pygame

-1

Eu estou tentando escrever um programa python / pygame para simplesmente exibir texto. Eu quero que ele funcione para que quando você digita, por exemplo, a letra "A", ele aparece na tela (como gedit / notepad / whatever). Eu estou fazendo isso, acrescentando a letra a uma string que, em seguida, é processada e colocada na tela. No entanto, tenho problemas com a obtenção de entrada do usuário. Eu sei que existe a função pygame.key.get_pressed (), mas eu só consigo descobrir como usá-la se você realmente sabe qual tecla você quer que o usuário pressione (por exemplo, W para avançar), mas não se Eu não sei. Se isso é confuso, aqui está o meu código:

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

Eu quero descobrir como obter a "tecla pressionada" para ser anexada à string.

    
por Sergey 11.04.2016 / 19:34

1 resposta

0

Você pode usar o evento KEYDOWN para isso porque pygame.key.get_pressed() fornecerá resultados na velocidade do FPS atual.

Aqui está um exemplo de trabalho modificado a partir do seu código:

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

Apenas mudou isso:

  • Removemos você pygame.key.get_pressed() call
  • Adicionada a verificação de evento pygame.KEYDOWN
por Timo 12.04.2016 / 10:14