Как обновить элементы на дисплее после истечения времени? - PullRequest
1 голос
/ 06 июня 2019

Я получил программу в Pygame, которая позволяет мне отображать элементы из списка list.Каждые 3 секунды он обновляется и отображает следующий элемент из list.Моя проблема в том, что элементы перекрываются на экране, но я хочу обновлять их каждый раз, когда прошло 3 секунды.Я уже использовал:

pygame.display.update()

, но это не работает.

list = ["x", "y", "z"]
if time > 3 and i < len(list):
    font = pygame.font.SysFont("comicsansms", 72)
    text2 = font.render(str(list[i]), True, (0, 128, 0))

    screen.blit(text2,
                (430 - text2.get_width() // 1, 220 - text2.get_height() // 2))

    pygame.display.update()
    pygame.display.flip()
    clock.tick(30)
    i = i + 1

1 Ответ

1 голос
/ 06 июня 2019

Вот что обновляет то, что отображается каждые три секунды:

import sys
import time
import pygame
from pygame.locals import *

pygame.init()

FPS = 30
WINDOWWIDTH = 640
WINDOWHEIGHT = 480
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
clock = pygame.time.Clock()
font = pygame.font.SysFont("comicsansms", 72)

screen = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT))
pygame.display.set_caption('Test')

my_list = ["x", "y", "z"]
bkgr = BLACK
i = len(my_list) - 1  # Index of last elememnt (so first is next displayed).
start_time = 0
while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()

    if (time.time() - start_time) > 3:  # 3 seconds since last update?
        i = (i + 1) % len(my_list)
        start_time = time.time()

        screen.fill(bkgr)
        text2 = font.render(str(my_list[i]), True, (0, 128, 0))
        screen.blit(text2, (430 - text2.get_width() // 1,
                            220 - text2.get_height() // 2))
        pygame.display.update()

    clock.tick(FPS)
...