You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

PyGame窗口无法打开,执行display.set_mode时崩溃求助

解决Mac OS Catalina下PyGame窗口无法打开的问题

我看到你在Mac OS Catalina(Python3.8)环境下运行PyGame代码时,卡在screen = display.set_mode([800, 500])这一行,窗口始终打不开,但相同代码在repl.it的PyGame编辑器里能正常运行。结合你的环境和代码情况,我整理了几个针对性的排查与解决方法:

一、优先排查PyGame版本兼容性

Mac OS Catalina对Python第三方库的兼容性要求比较特殊,尤其是涉及图形渲染的PyGame。你可以先确认当前安装的PyGame版本是否适配你的系统:

  • 打开终端执行 pip show pygame 查看版本号
  • 如果版本偏旧,尝试卸载并重装适配Catalina的稳定版本:
    pip uninstall pygame
    pip install pygame==2.0.0  # 这个版本对Catalina的兼容性经过较多验证
    
    若使用系统自带Python,记得加上--user参数避免权限问题:pip install --user pygame==2.0.0

二、修改set_mode的初始化参数

Mac平台的PyGame窗口初始化可能需要额外的显示驱动参数,你可以尝试给set_mode添加特定标志:
将原代码中的初始化行替换为以下任一写法:

# 尝试无框窗口模式,绕过系统窗口管理的部分限制
screen = display.set_mode([800, 500], display.NOFRAME)

或者:

# 使用硬件加速+缩放模式,适配Mac的显示驱动
screen = display.set_mode([800, 500], display.SCALED | display.HWSURFACE)

三、修复系统权限问题

Catalina的权限管控非常严格,PyGame可能没有获取显示权限的权限:

  1. 打开「系统偏好设置」→「安全性与隐私」→「隐私」标签
  2. 找到「屏幕录制」或「辅助功能」选项,检查你的Python3.8解释器是否在授权列表中
  3. 如果没有,点击列表下方的加号,找到Python3.8的安装路径并添加
  4. 重启终端或IDE后再运行代码

四、完善代码逻辑(避免隐性崩溃)

你的代码目前缺少窗口退出逻辑和鼠标松开的处理,这可能导致窗口无响应被系统判定为崩溃,让你误以为是初始化失败。修改后的完整代码参考:

from pygame import *
from pygame.event import *

init()
screen = display.set_mode([800, 500], display.SCALED)
RED = (255, 0, 0)
mousedown = False

while True:
    for event in get():
        if event.type == QUIT:  # 添加窗口退出事件,避免无响应
            quit()
            exit()
        if event.type == MOUSEBUTTONDOWN:
            mousedown = True
        if event.type == MOUSEBUTTONUP:  # 添加鼠标松开的状态重置
            mousedown = False
    
    if mousedown:
        location = mouse.get_pos()
        draw.circle(screen, RED, location, 20)
    
    display.update()

内容的提问来源于stack exchange,提问作者CCjump21

火山引擎 最新活动