1 回答

TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個(gè)贊
問題出在 MacOS(以及可能的其他操作系統(tǒng))上,屏幕僅在檢查 pygame 事件后更新。
通常,這是通過調(diào)用pygame.event.get()
或 來完成的pygame.event.poll()
。
但是,如果您的程序不關(guān)心檢查事件,那么調(diào)用pygame.event.pump()
也可以。
pygame.event.pump()
鏈接的文檔中簡(jiǎn)要提到了這個(gè)問題。
事件隊(duì)列中有一些重要的事情必須在內(nèi)部處理。主窗口可能需要重新繪制或響應(yīng)系統(tǒng)。如果您長(zhǎng)時(shí)間未能調(diào)用事件隊(duì)列,系統(tǒng)可能會(huì)認(rèn)為您的程序已鎖定。
所以解決方案是在 后調(diào)用pygame.event.pump()
(或另一個(gè)事件函數(shù))pygame.display.update()
。
更正后的代碼將是:
import pygame
import sys
pygame.init()
win = pygame.display.set_mode((500, 500))
pygame.display.set_caption("hello")
font = pygame.font.SysFont("comicsans", 100)
text = font.render("hello", 1, (255, 255, 255))
win.blit(text, (200, 200))
pygame.display.update()
pygame.event.pump() # Make sure events are handled
pygame.time.delay(3000)
pygame.quit()
sys.exit(0)
添加回答
舉報(bào)