Обработка текста Pygame

Я пытаюсь написать программу на python / pygame для простого отображения текста. Я хочу, чтобы он работал так, чтобы при вводе, например, буквы «А», она появлялась на экране (вроде как gedit / notepad / what). Я делаю это, добавляя письмо к строке, которая затем отображается и выводится на экран. Однако у меня есть проблемы с фактическим получением пользовательского ввода. Я знаю, что есть функция 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
задан 29 November 2017 в 23:09

1 ответ

Вы могли использовать KEYDOWN событие для этого, потому что pygame.key.get_pressed() даст Вам результаты на скорости текущего кадр/с.

Вот рабочий пример, измененный из Вашего кода:

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 проверка события
0
ответ дан 30 November 2017 в 09:09

Другие вопросы по тегам:

Похожие вопросы: