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