屏幕显示停止更新,直到程序终止

时间:2018-03-13 22:45:57

标签: pygame display

尝试显示一系列屏幕时,第一个屏幕正确显示 但在继续时,'(无响应)'被添加到第一个屏幕标题 并且在程序终止之前没有进一步的更改,当出现正确的最终屏幕标题编号3时。

# python 3.6  pygame 1.9.3
import pygame as pg
pg.init()
grey = (128,128,128,0)
Screen = pg.display.set_mode((1020,720))

for id in range(1,4):
    Screen.fill(grey)
    pg.display.set_caption('My new screen number '+str(id))
    # code to blit stuff onto the screen, not shown here
    pg.display.flip()
    input('examine screen and Enter to see the next one')
    continue

1 个答案:

答案 0 :(得分:0)

来自文档:

  

对于游戏的每一帧,您需要对事件队列进行某种调用

即使您不想处理事件,也需要致电pygame.event.pump()以保持操作系统满意。

此外,input是一个阻塞操作,因此您需要它在不同的线程中运行,以便您的程序仍然可以每帧抽取事件队列。此时你应该意识到使用pygame正确处理事件会更容易。

这是一个例子,我添加了一个时钟来限制FPS,因此CPU没有挂钩:

import pygame as pg
pg.init()
grey = (128,128,128,0)
Screen = pg.display.set_mode((1020,720))
finished = False
id = ""
clock = pg.time.Clock() #for limiting FPS
while not finished:
    for event in pg.event.get():            
        if event.type == pg.QUIT:
            finished = True
        elif event.type == pg.KEYDOWN:
            id = event.unicode
    Screen.fill(grey)
    pg.display.set_caption('My new screen number '+str(id))
    # code to blit stuff onto the screen, not shown here
    pg.display.flip()
    #input('examine screen and Enter to see the next one')
    clock.tick(60)
pg.quit()