【发布时间】:2017-06-05 01:28:42
【问题描述】:
我在 OS X 10.11.1 上使用 python 2.7.10 和 pygame 1.9.1
每当我在 pygame 表面上绘制或填充任何东西时,我都会收到 Segmentation fault: 11 和 python 崩溃(至少我认为这是原因)。我曾经为学校做过几个 pygame 项目,这些项目过去曾在同一台机器上工作过,但现在只是崩溃了。我不记得从那以后更改 python 或 pygame 版本,只更新 OS X 版本。
这是一个简单的小程序,应该只在紫色背景上显示一个红色矩形:
import pygame
import pygame.locals
class ExampleClass:
def __init__(self):
self.screen = pygame.display.set_mode(
(100, 100),
pygame.locals.DOUBLEBUF |
pygame.locals.SRCALPHA)
def paint(self, surface):
surface.fill((100, 50, 255)) # blue-purple-y background
pygame.draw.rect(surface, (255, 50, 100), (10, 10, 50, 25)) # red rectangle
def main_loop(self):
clock = pygame.time.Clock()
while True:
clock.tick(30)
for e in pygame.event.get():
if e.type == pygame.QUIT:
pygame.quit()
return
if e.type == pygame.KEYDOWN and e.key == pygame.K_ESCAPE:
pygame.quit()
return
self.paint(self.screen)
pygame.display.flip()
example = ExampleClass()
example.main_loop()
我在 Windows 机器上试过这个,它工作得很好,但是它在我的 mac 上崩溃了。如果您注释掉self.paint(self.screen),则会弹出窗口并且没有崩溃。我搜索了一下,没有找到太多。我不知道是什么原因导致它这样做,任何帮助将不胜感激。
【问题讨论】:
-
我认为您需要在开头致电
pygame.init()。 -
@DJMcMayhem 我刚试过,它似乎没有做任何事情。在我之前的任何项目中,我从未有过这种情况,它们都在同一时间起作用。同样的代码在 Windows 上也可以正常工作,所以我认为这不是问题......
标签: python python-2.7 pygame