Я пытаюсь скопировать изображение и текст на спрайт, но ничего не появляется.
Если я попытаюсь перетащить его прямо на экран, оно будет работать, но не иначе.
class Button(pygame.sprite.Sprite):
def __init__(self, text, pos, screen, text_size):
self.text = text
self.text_size = text_size
self.pos = pos
self.width = len(text) * text_size
self.height = 50
self.screen = screen
self.timer = 0
self.underscore = Underscore((self.pos[0] - self.width / 4.5, self.pos[1] + self.text_size), 5)
super().__init__()
self.image = pygame.Surface([self.width, self.height])
self.rect = self.image.get_rect()
# self.rect = self.pos
text_render.render_text(self.text, self.image, self.pos, self.text_size, len(self.text) * 10)
def is_clicked(self):
mouse = pygame.mouse.get_pos()
self.timer += 30
if self.pos[0] - self.width / 4 < mouse[0] < self.pos[0] + self.width / 4 and self.pos[1] < mouse[1] < self.pos[1] + self.height:
pygame.draw.rect(self.screen, white, [self.pos[0] - self.width / 4.5, self.pos[1] + self.text_size, self.width / 2, 5])
if pygame.mouse.get_pressed()[0] and self.timer > 100:
self.timer = -300
return True
else:
pygame.draw.rect(self.screen, black, [self.pos[0] - self.width / 4.5, self.pos[1] + self.text_size, self.width / 2, 5])
return False
if self.timer < 0:
pygame.draw.rect(self.screen, gray, [self.pos[0] - self.width / 4.5, self.pos[1] + self.text_size, self.width / 2, 5])
def update(self):
self.is_clicked()
Рендеринг текста
def render_text(text, surface, pos, size, box_width):
font = pygame.font.SysFont('Freshandbold.ttf', size)
y_val = pos[1]
for line in string_split(text, size, box_width):
screen_text = font.render(line, True, white)
surface.blit(screen_text, (pos[0] - box_width, y_val))
y_val += font.get_linesize() / 1.5
Он должен вспыхнуть на поверхности спрайта, когда я изменю self.screen на self.image, но это не так, по крайней мере, насколько я вижу.