将头撞到显示器上2小时后,我意识到:
display.blit(mypic, posx, posy)
pygame.display.update()
不会起作用(即不会在屏幕上显示任何内容),除非我打电话:
pygame.event.get()
这是地球上最奇怪的虫子,还是我错过了什么?
我在python 2.7上运行pygame,mac os high sierra, 如果这是由于pygame和mac os之间的混帐不兼容,我会感到最不自在。
关于这里出了什么问题的任何暗示?
示例代码:
import pygame
winWidth = 800
winHeight = 600
posx = 200; posy = 200
mypic = pygame.image.load("path_to_my_picture.jpg")
COL_BACKGROUND = (255,255,255)
DISPLAYSURF = pygame.display.set_mode((winWidth, winHeight))
pygame.init()
display.fill(COL_BACKGROUND)
display.blit(mypic, posx, posy)
# only including the following line it will blit the picture:
# pygame.event.get()
pygame.display.update()
答案 0 :(得分:4)
我不是100%确定如何使用mac,但我假设它与Windows类似,如果你不定期调用pygame.event.get()
操作系统认为窗口已经停止响应而且没有更新它。
Pygame文档的事件页面中的pygame.event.pump()下提到了这一点
对于游戏的每一帧,您都需要进行某种调用 到事件队列。这可确保您的程序可以进行内部交互 与其余的操作系统。如果你没有使用其他 游戏中的事件函数,你应该调用pygame.event.pump()来 允许pygame处理内部操作。