导致 display Surface quit 发生的问题如下代码:
import sys, pygame
import pdb
pygame.init()
pdb.set_trace()
screen = pygame.display.set_mode((640,480))
while 1:
event = pygame.event.poll()
if event.type == pygame.QUIT:
pygame.quit()
screen.fill((0,0,0))
pygame.display.update()
这段代码非常好理解 就是一个空白窗口 但是关闭之后会显示 display Surface quit!
问题在哪里呢? 咱们来debug 一下
import pdb
然后在pygame.quit()后面设置断点
pdb.set_trace()
运行之后 关闭窗口 你会发现 断点居然还在执行! 这就说明了 pygame.quit()并没有实际退出程序
但是他已经销毁了screen 此时在fill的时候就产生了 error
所以解决办法就是在 pygame.quit() 后面加个 break就完了.......
亲,注意缩进啊。(坑爹python缩进语言规则好讨厌~)
#修复代码import math
import pygame
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((600,500))
pygame.display.set_caption("The Pie Game - Press 1,2,3,4")
myfont = pygame.font.Font(None, 60)
color = 200, 80, 60
width = 4
x = 300
y = 250
radius = 200
position = x-radius, y-radius, radius*2, radius*2
piece1 = False
piece2 = False
piece3 = False
piece4 = False
while True:
for event in pygame.event.get():
if event.type == QUIT:
exit()
elif event.type == KEYUP:
if event.key == pygame.K_ESCAPE:
sys.exit()
elif event.key == pygame.K_1:
piece1 = True
elif event.key == pygame.K_2:
piece2 = True
elif event.key == pygame.K_3:
piece3 = True
elif event.key == pygame.K_4:
piece4 = True
#clear the screen
screen.fill((0,0,200))
你的event.key == pygame.K_1这句写到event.type == KEYUP这句的作用域外面了。当然监测不到key了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)