0

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.

Axhul
  • 147
  • 8

0 Answers0