Pygame eingabe bei mehreren Zeilen
Verfasst: Sonntag 30. Mai 2021, 16:20
Hi,
ich programmiere momentan ein Programm, bei dem es auch eine Zeicheneingabe über verschiedene Zeilen geben soll, das kriege ich jedoch nicht richtig hin. Mein Ziel ist es, dass das Programm sobald die maximale Anzahl an Zeichen in einer Zeile erreicht ist, es in eine neue Zeile springt. Um den Text, soll es auch einen Text kasten geben. Den Text benötige ich dann in einer Variabel
Danke schon mal für die Hilfe
LG Henri
ich programmiere momentan ein Programm, bei dem es auch eine Zeicheneingabe über verschiedene Zeilen geben soll, das kriege ich jedoch nicht richtig hin. Mein Ziel ist es, dass das Programm sobald die maximale Anzahl an Zeichen in einer Zeile erreicht ist, es in eine neue Zeile springt. Um den Text, soll es auch einen Text kasten geben. Den Text benötige ich dann in einer Variabel
Code: Alles auswählen
import pygame, sys
pygame.init()
clock = pygame.time.Clock()
screen = pygame.display.set_mode([800,800])
base_font = pygame.font.Font(None,32)
msgpm = ''
user_text = ''
input_rect = pygame.Rect(200,125,140,32)
input_rect1 = pygame.Rect(200,200,140,32)
color_active = pygame.Color('lightskyblue3')
color_passive = pygame.Color('gray15')
color = color_passive
color1 = color_passive
active = False
active1 = False
text1 = 'msgs per minute'
text2 = 'words to send'
while True:
keys = pygame.key.get_pressed()
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.MOUSEBUTTONDOWN:
if input_rect.collidepoint(event.pos):
active = True
else:
active = False
if input_rect1.collidepoint(event.pos):
active1 = True
else:
active1 = False
if event.type == pygame.KEYDOWN:
if active == True:
if event.key == pygame.K_BACKSPACE:
msgpm = msgpm[:-1]
else:
msgpm += event.unicode
for letter in msgpm:
if letter not in '1234567890':
msgpm = msgpm[:-1]
if active1 == True:
if event.key == pygame.K_BACKSPACE:
user_text = user_text[:-1]
else:
user_text += event.unicode
screen.fill((0,0,0))
if active:
color = color_active
else:
color = color_passive
if active1:
color1 = color_active
else:
color1 = color_passive
pygame.draw.rect(screen,color,input_rect,2)
pygame.draw.rect(screen,color1,input_rect1,2)
text_surface = base_font.render(msgpm,True,(255,255,255))
text_surface1 = base_font.render(text1,True,(255,255,255))
text_surface2 = base_font.render(user_text,True,(255,255,255))
text_surface3 = base_font.render(text2,True,(255,255,255))
screen.blit(text_surface,(input_rect.x + 5, input_rect.y + 5))
screen.blit(text_surface1,(input_rect.x - 190, input_rect.y + 5))
screen.blit(text_surface2,(input_rect1.x + 5, input_rect1.y + 5))
screen.blit(text_surface3,(input_rect1.x - 190, input_rect1.y + 5))
input_rect.w = max(100,text_surface.get_width() + 10)
input_rect1.w = max(100,text_surface2.get_width() + 10)
pygame.display.flip()
clock.tick(60)
LG Henri