Pygame窗口出现黑屏问题,调用pygame.Surface对象时报错求助
解决Pygame窗口黑屏+Surface对象不可调用的错误
嘿,这个问题我熟!咱们先看你遇到的报错信息:
Traceback (most recent call last): File "C:/Users/Draco/OneDrive/Documents/Programming/graphics.py", line 13, in screen.blit(img(0,0)) TypeError: 'pygame.Surface' object is not callable
核心问题分析
你这里踩了一个新手常犯的小坑:当你用pygame.image.load()加载Picture.jpg后,得到的img是一个pygame.Surface对象——它是用来存储图像数据的载体,并不是函数,所以不能像img(0,0)这样加括号调用。而screen.blit()方法需要两个参数:第一个是要绘制的Surface对象,第二个是绘制的位置(必须是一个(x,y)格式的元组)。
代码修正步骤
把你出错的那行代码:
screen.blit(img(0,0))
直接改成:
screen.blit(img, (0, 0))
额外排查点(解决黑屏问题)
如果改完之后窗口还是黑屏,建议你检查这几个细节:
- 图片路径是否正确:确保
Picture.jpg和你的graphics.py在同一个文件夹里,或者你在加载时写了完整的绝对路径,比如pygame.image.load("C:/Users/Draco/OneDrive/Documents/Programming/Picture.jpg") - 别忘了更新屏幕:在调用
blit绘制图像后,一定要加一行pygame.display.flip()或者pygame.display.update(),不然绘制的内容不会同步到窗口上 - 检查初始化流程:确认你开头已经执行了
pygame.init(),并且正确创建了屏幕对象,比如screen = pygame.display.set_mode((800, 600))(括号里是你想要的窗口尺寸) - 添加基础事件循环:没有事件循环的话,窗口可能会直接卡死或者一闪而过,建议加上这段代码来维持窗口运行:
running = True while running: # 处理关闭窗口的事件 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # 绘制图像 screen.blit(img, (0, 0)) # 更新屏幕显示 pygame.display.flip() # 退出Pygame pygame.quit()
按上面的步骤调整后,应该就能正常显示图片啦!
内容的提问来源于stack exchange,提问作者K.Hazell
相关产品推荐
相关产品推荐

