【发布时间】:2017-07-21 21:24:53
【问题描述】:
我很难使用pygame 将文本传送到屏幕上。现在在退出之前我只想让一条消息显示2秒钟,然后退出游戏。为此,我使用time.sleep(2)。但是,我相信大多数其他人都没有从我在 Stackoverflow 上查找的问题中遇到这个问题,文本直到窗口关闭前的最后一刻才出现。相反,按下关闭按钮后屏幕保持白色。我的代码如下。请注意,这不是与this question 的重复。
import pygame
import time
pygame.init()
white = (255,255,255)
black = (0,0,0)
red = (255,0,0)
display_width = 800
display_height = 600
gameDisplay = pygame.display.set_mode((display_width,display_height))
clock = pygame.time.Clock()
FPS = 30
font = pygame.font.SysFont(None, 25)
x = False
while not x:
for event in pygame.event.get():
if event.type == pygame.QUIT:
x = True
gameDisplay.fill(white)
pygame.display.update()
clock.tick(FPS)
screen_text = font.render('Test', True, red)
gameDisplay.blit(screen_text, (0, 0))
pygame.display.update()
time.sleep(2)
pygame.quit()
【问题讨论】:
-
没有 time.sleep 是否可以工作?
-
@whackamadoodle3000 它只是立即退出,所以我不确定 time.sleep 是否是问题,但它似乎在 time.sleep 之后调用
update()暗示了一些奇怪的异步。 .. 很困惑。 -
这实际上看起来是一个相当棘手的问题!有趣的是,您的代码在我的 Windows 10 和 python 2/3 计算机上“有效”。然而,
time.sleep(n)不是最优的,因为当调用sleep函数时,python 程序本质上是“冻结”的,因此 pygame 窗口将冻结。通过使用pygame.time.set_timer()在 x 毫秒后触发自定义 pygameuserevent来解决该问题也不能很好地工作,因为当应用程序窗口被拖动时所有 pygame 事件都会冻结!