Как сделать выделение текста в пайгейм?
У меня есть в пайгейм окно с каким-то текстом, как сделать так, чтобы этот текст можно было выделять курсором и копировать?
Ответы (1 шт):
Автор решения: Fox Fox
→ Ссылка
Для того чтобы выделять текст курсором и копировать его в Pygame, Вам нужно будет реализовать функциональность выделения текста и буфера обмена вручную, так как Pygame не предоставляет встроенных средств для этого. Используйте библиотеку pyperclip для копирования текста в буфер обмена. Пример простейшей реализации, если нужен:
import pygame
import pyperclip
pygame.init()
# Параметры окна
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Text Selection Example")
# Цвета
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
BLUE = (0, 0, 255)
# Шрифт
font = pygame.font.Font(None, 36)
# Текст
text = "Выделите этот текст и скопируйте его."
text_surface = font.render(text, True, BLACK)
text_rect = text_surface.get_rect(topleft=(50, 50))
# Переменные для выделения текста
selecting = False
start_pos = None
end_pos = None
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.MOUSEBUTTONDOWN:
if text_rect.collidepoint(event.pos):
selecting = True
start_pos = event.pos
elif event.type == pygame.MOUSEBUTTONUP:
if selecting:
selecting = False
end_pos = event.pos
# Копирование выделенного текста в буфер обмена
selected_text = text # Здесь нужно определить выделенный текст
pyperclip.copy(selected_text)
elif event.type == pygame.MOUSEMOTION:
if selecting:
end_pos = event.pos
screen.fill(WHITE)
screen.blit(text_surface, text_rect)
if start_pos and end_pos:
pygame.draw.rect(screen, BLUE, (start_pos[0], start_pos[1], end_pos[0] - start_pos[0], end_pos[1] - start_pos[1]), 2)
pygame.display.flip()
pygame.quit()