Я пытаюсь написать программу на 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()
Я хочу выяснить, как получить «нажатую клавишу» для добавления в строку.
Вы могли использовать 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
проверка события