I'm using Pygame 1.9.6 and Python 3.7.4. I would like to create a class for a text box for user input. But I don't know how to do it to the point of the logic. I've started Object Oriented Programming yesterday. So I would like input on how I would create a class for the code below.
import pygame
pygame.init()
screen = pygame.display.set_mode((800, 600))
clock = pygame.time.Clock()
base_font = pygame.font.Font(None, 32)
user_text = ''
input_rect = pygame.Rect(100, 200, 140, 32)
color_active = pygame.Color('lightskyblue3')
color_passive = pygame.Color('gray15')
color = color_passive
active = False
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.MOUSEBUTTONDOWN:
if input_rect.collidepoint(event.pos):
active = True
else:
active = False
if event.type == pygame.KEYDOWN:
if active == True:
if event.key == pygame.K_BACKSPACE:
user_text = user_text[:-1]
else:
user_text += event.unicode
screen.fill((190, 70, 60))
if active:
color = color_active
else:
color = color_passive
pygame.draw.rect(screen, color, input_rect, 2)
text_surface = base_font.render(user_text, True, (255, 255, 255))
screen.blit(text_surface, (input_rect.x + 5, input_rect.y + 5))
input_rect.w = max(100, text_surface.get_width() + 10)
pygame.display.update()
clock.tick(60)
As you see this is a lot of code just for a text box. But how would I set up the logic, the parameters and what not to do this. As always thank you for the input and the advice. I like it.