import pygame import sys pygame.init() display = pygame.display.set_mode((400, 300)) class TextInput(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.selectedColour = 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 clicked(self, mousePos): if self.bg.collidepoint(mousePos): self.isSelected = not(self.isSelected) return True return False def update(self, mousePos): pass def update_text(self, new_text): temp = self.font.render(new_text, True, self.color) if temp.get_rect().width >= (self.bg.width - 20): return self.text_value = new_text self.text = temp 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.Selected)