Как бы я отображал изображение в фоновом режиме во время выполнения панели загрузки?

#python #python-3.x #pygame #loading

#python #python-3.x #pygame #Загрузка

Вопрос:

Итак, я создал панель загрузки, и мне удалось заставить ее успешно работать. Однако я хочу отображать изображение в фоновом режиме во время выполнения панели выполнения, и мои действия пропадают всякий раз, когда я пытаюсь.

Я попытался добавить новую строку, которая постоянно «подсвечивала» бы изображение. screen.blit(loadingimg) но в итоге выдал эту ошибку:

 DS.blit(loadingimg)
TypeError: function missing required argument 'dest' (pos 2)
  
 smallfont = pygame.font.SysFont("comicsansms",25)
DS = pygame.display.set_mode((W, H))

def text_objects(text, color, size):
    if size == "small":
        textSurface = smallfont.render(text, True, color)

    return textSurface, textSurface.get_rect()

def loading(progress):
    if progress < 100:
        text = smallfont.render("Loading: "   str(int(progress))   "%", True, green)
    else:
        text = smallfont.render("Loading: "   str(100)   "%", True, green)

    DS.blit(text, [453, 273])

def message_to_screen(msh, color, y_displace = 0, size = "small"):
    textSurf, textRect = text_objects(msg, color, size)
    textRect.center = HW, HH   y_displace
    DS.blit(textSurf, textRect)

while (progress/2) < 100:
    event_handler()
    DS.fill(WHITE)
    DS.blit(loadingimg)
    time_count = (random.randint(1,1))
    increase = random.randint(1,20)
    progress  = increase
    pygame.draw.rect(DS, green, [423, 223, 204, 49])
    pygame.draw.rect(DS, BLACK, [424, 224, 202, 47])
    if (progress/2) > 100:
        pygame.draw.rect(DS, green, [425, 225, 200, 45])
    else:
        pygame.draw.rect(DS, green, [425, 225, progress, 45])
    loading(progress/2)
    pygame.display.flip()

    time.sleep(time_count)
  

Что должно произойти, так это то, что появляется панель загрузки, и во время загрузки индикатора выполнения на заднем плане появляется изображение. После того, как индикатор выполнения достигнет 100%, он перейдет к следующему, но в этом случае я просто хочу, чтобы оба они исчезли после достижения 100%

Мой фактический вывод — это просто эта ошибка:

 DS.blit(loadingimg)
TypeError: function missing required argument 'dest' (pos 2)
  

Комментарии:

1. смотрите документацию для blit() — для этого требуется не только изображение, но и позиция — blit(image, (x,y)) DS.blit(loadingimg, (0, 0))

2. Глупая ошибка от моего имени, спасибо, чувак

Ответ №1:

Смотрите документацию для blit(). Для этого также требуется position — blit(image, (x,y)) или blit(image, rect)

 DS.blit(loadingimg, (0, 0))
  

blit() используется для отображения не только фона, но и изображения игрока, изображения врагов — и они могут отображаться в любом месте экрана.