我正在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有关,但我不太了解能够解决它。
答案 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常见问题解答。