import pygame
import sys 

pygame.init()
display = pygame.display.set_mode((400,300))

class TextImput(pygame.sprite.Sprite):
    def __init__ (self, x, y, width=100, height=50, color=(0, 0, 0),
                  bgcolor=(0,255,0), selectedColor=(0,0,255)):
        super().__init__()
        self.text_value =  ""
        self.isSelected = False 
        self.color = color
        self.bgcolor =bgcolor
        self.selectedColor = selectedColor

        self.font = pygame.font.SysFont("Verdana", 20)
        self.text = self.font.render(self.text_value, True, self.color)
        self.bg = pygame.Rect(x, y, width, height)

def render(self,display):
    self.pos = self.text.get_rect(center = (self.bg.x + self.bg.width/2,
                                            self.bg.y + self.bg.height/2))
    if self.isSelected:
        pygame.draw.rect(display, self.selectedColor, self.bg)
    else :
        pygame.draw.rect(display, self.bgcolor, self.bg)
    display.blit(self.text, self.pos)

class CustomGroup(pygame.sprite.Group):
    def __init__(self):
        super().__init__()
        self.current = None

        TextImputGroup = CustomGroup()
        TextImputGroup.add(TextImput(x=100, y=100, width = 200))
        TextImputGroup.add(TextImput(x=100, y=200, width = 200))

    while True:
        mouse_pos = pygame.mouse.get_pos()
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()

        for textimput in TextImputGroup :
            textimput.render(display)

        pygame.display.update