Почему не обновляется экран в PyGame?

Я относительно новичок в PyGame. Я пытаюсь сделать простую программу, чтобы показать строку, обозначающую положение мыши на экране.

import pygame, sys
from pygame.locals import *

pygame.init()
screen = pygame.display.set_mode((400,400),0,32)
myFont = pygame.font.SysFont('arial', 14)

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()

    x,y = pygame.mouse.get_pos()
    label = myFont.render('mouse coords: ' + str(x) + ', ' + str(y), 1, (0,128,255))

    screen.blit(label, (10,10))
    pygame.display.update()

Когда я перемещаю мышь, метка становится размытой, пока текст не станет нечитаемым. Я уверен, что правильно вызываю screen.blit () и pygame.display.update (), но ярлык не обновляется! Любая помощь была бы замечательной.


person Y-M    schedule 30.06.2013    source источник
comment
Сначала очистите экран, используя screen.fill(Color("black")), в начале логики рисования.   -  person ninMonkey    schedule 01.07.2013


Ответы (1)


то, что вам нужно сделать, это скопировать фон в цикле, потому что то, что вы делаете, - это копирование мышиных коордов один поверх друг друга

сделай что-нибудь вроде этого:

import pygame, sys
from pygame.locals import *

pygame.init()
screen = pygame.display.set_mode((400,400),0,32)
myFont = pygame.font.SysFont('arial', 14)

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()

    x,y = pygame.mouse.get_pos()
    label = myFont.render('mouse coords: ' + str(x) + ', ' + str(y), 1, (0,128,255))
    screen.fill((0,0,0))
    screen.blit(label, (10,10))
    pygame.display.update()

таким образом вы заполняете экран черным цветом между каждым обновлением, поэтому позиция мыши мигает, затем она очищается заливкой, затем создается новая позиция и т. д.

person Serial    schedule 30.06.2013