`pyautogui.screenshot()` возвращает объект типа `PIL.Image.Image`, а `pygame.surfarray.make_surface()` ожидает массив данных, который можно использовать для создания поверхности. Для этого необходимо преобразовать изображение из PIL в формат, который понимает Pygame.
import pygame
import pyautogui as pag
import numpy as np
# Получаем скриншот и конвертируем его в формат, который понимает Pygame
screenshot = pag.screenshot()
screenshot_rgb = screenshot.convert('RGB')
screenshot_array = np.array(screenshot_rgb)
pygame.font.init()
pygame.init()
screen = pygame.display.set_mode((screenshot.size), pygame.NOFRAME)
pygame.display.set_caption("Hello World!")
run = True
while run:
frame_surface = pygame.surfarray.make_surface(screenshot_array)
screen.blit(frame_surface, (0, 0))
pygame.draw.rect(screen, (255, 255, 255), (100, 100, 100, 100))
f1 = pygame.font.Font(None, 36)
text1 = f1.render(f'TeSt', True, (255, 255, 255))
screen.blit(text1, (100, 50))
pygame.display.flip()
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
Данный код даёт при запуске:
Как сделать так чтобы код работал?