Python 睡眠不会';I don’我不能在需要的地方工作
所以,我正在学习PyGame(初学者)。当我在PyGame窗口上看到显示文本时,睡眠并没有像预期的那样工作。只要我点击任何一个键,它就会显示消息,然后休眠n秒。但当我尝试它时,它在显示之前睡了n秒。为什么会发生这种情况,我应该如何解决Python 睡眠不会';I don’我不能在需要的地方工作,python,python-3.x,pygame,Python,Python 3.x,Pygame,所以,我正在学习PyGame(初学者)。当我在PyGame窗口上看到显示文本时,睡眠并没有像预期的那样工作。只要我点击任何一个键,它就会显示消息,然后休眠n秒。但当我尝试它时,它在显示之前睡了n秒。为什么会发生这种情况,我应该如何解决 import pygame import time pygame.init() white = (255, 255, 255) gameDisplay = pygame.display.set_mode((800, 600)) clock = pygame.
import pygame
import time
pygame.init()
white = (255, 255, 255)
gameDisplay = pygame.display.set_mode((800, 600))
clock = pygame.time.Clock()
def message_display(text):
font = pygame.font.Font('freesansbold.ttf', 115)
text_surface = font.render(text, True, (0, 0, 0))
gameDisplay.blit(text_surface, (400, 300))
pygame.display.update()
time.sleep(2)
gameDisplay.fill(white)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
if event.type == pygame.KEYDOWN:
message_display("Hello")
pygame.display.update()
pygame.quit()
由于某些代码优化导致了同步行为,因此在某些系统上似乎会发生这种情况。因此,迫使它在进入下一行之前完成执行似乎有帮助<代码>线程模块帮助完成了这项工作
def message(text):
font = pygame.font.Font('freesansbold.ttf', 115)
text_surface = font.render(text, True, (0, 0, 0))
gameDisplay.blit(text_surface, (400, 300))
pygame.display.update()
def message_display(text):
import threading
p1 = threading.Thread(target=message, args=(text, ))
# start the thread execution
p1.start()
# wait for it to complete to join it with the main program
p1.join()
time.sleep(5)
我无法重现这个问题。在我按下一个键后,HELLO文本会立即出现。那么,如何修复它呢?我不懂。在我一个朋友的笔记本电脑上,它可以正常工作,但在另一个朋友的笔记本电脑和我的笔记本电脑上,它先休眠,然后显示。感觉就像在JS中发生了某种同步性。