Pygame“Hello World”程序Mac OS 10.8出错

时间:2013-06-15 15:40:37

标签: python sdl pygame

我正在Mountain Lion中运行Pygame。我认为它安装正确,因为我可以导入模块而没有任何错误。

当我尝试运行一个非常简单的程序时,我得到一个异常。这是代码:

import pygame, sys
from pygame.locals import *

pygame.init()
DISPLAYSURF = pygame.display.set_mode((400, 300))
pygame.display.set_caption("Hello World!")

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
    pygame.display.update()

以下是例外:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Error (1000) creating CGSWindow on line 259'

First throw call stack:

(
0   CoreFoundation 0x00007fff89699b06 __exceptionPreprocess + 198

1   libobjc.A.dylib 0x00007fff83b433f0 objc_exception_throw + 43

2   CoreFoundation 0x00007fff896998dc +[NSException raise:format:] + 204

3   AppKit 0x00007fff85492b49 _NSCreateWindowWithOpaqueShape2 + 655

4   AppKit 0x00007fff85491340 -[NSWindow _commonAwake] + 2002

5   AppKit 0x00007fff8544fd82 -[NSWindow _commonInitFrame:styleMask:backing:defer:] + 1763

6   AppKit 0x00007fff8544eecf -[NSWindow _initContent:styleMask:backing:defer:contentView:] + 1568

7   AppKit 0x00007fff8544e89f -[NSWindow initWithContentRect:styleMask:backing:defer:] + 45

8   libSDL-1.2.0.dylib 0x00000001043cbaf9 -[SDL_QuartzWindow initWithContentRect:styleMask:backing:defer:] + 279

9   libSDL-1.2.0.dylib 0x00000001043c951b QZ_SetVideoMode + 1409

10  libSDL-1.2.0.dylib 0x00000001043c0809 SDL_SetVideoMode + 907

11  display.so 0x000000010444330f set_mode + 271

12  Python 0x00000001040be754 PyEval_EvalFrameEx + 7873

13  Python 0x00000001040bc769 PyEval_EvalCodeEx + 1638

14  Python 0x00000001040bc0fd PyEval_EvalCode + 54

15  Python 0x00000001040dae88 run_mod + 53

16  Python 0x00000001040daf2f PyRun_FileExFlags + 137

17  Python 0x00000001040daa7d PyRun_SimpleFileExFlags + 718

18  Python 0x00000001040eb593 Py_Main + 3039

19  libdyld.dylib  0x00007fff862497e1 start + 0
)
libc++abi.dylib: terminate called throwing an exception

我认为导致它的是pygame.display.set_mode((400,300))。我的谷歌搜索告诉我它是图形的,可能与SDL有关,但我不太了解能够解决它。

1 个答案:

答案 0 :(得分:0)

可能是SDL视频驱动程序未正确初始化。首先确保pygame.init()返回(6,0)。这应该告诉您是否所有内容都已正确初始化。如果没有,您可以使用pygame.display.get_driver()检查它所使用的视频驱动程序。如果没有为您的计算机使用正确的驱动程序,则可以通过将环境变量os.environ['SDL_VIDEODRIVER']=设置为以下x11, dga, fbcon, directfb, ggi, vgl, svgalib, aalib之一(来自pygame documentation)来更改它,具体取决于可用的驱动程序

查看how to change the video driver上的pygame常见问题解答。