You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:23:42