相关文章推荐
大气的日记本  ·  makefile cp - CSDN文库·  2 月前    · 
爱吹牛的吐司  ·  autocomplete= - CSDN文库·  4 月前    · 
体贴的甘蔗  ·  【错误处理】Laravel ...·  5 月前    · 
严肃的打火机  ·  DPDK 网卡驱动学习 - ...·  1 年前    · 

pygame程序运行后窗口冻结

1 人关注

我正在学习pygame,一直在研究Eric Matthews的《Python Crash Course》一书中给出的例子( https://g.co/kgs/WP5fay ).我在macOS High Sierra上安装了1.9.3版的pygame。

当我运行下面的程序时,打开了一个窗口,当我点击'X'关闭它时,窗口冻结了,咒语一直在盘旋,我在活动监视器中得到一个python未响应的错误。我已经尝试了很多办法来解决这个问题,但它没有消失。

import pygame
import sys
def run_game():
    pygame.init()
    screen = pygame.display.set_mode((400, 300))
    pygame.display.set_caption('Alien Invasion')
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
        pygame.display.flip()
run_game() #when I run this function, a window opens and freezes a couple of seconds after
    
4 个评论
对我来说,同样的配置,它工作得很好。这种行为对你来说是一致的吗?
skrx
你使用IDLE IDE吗?那么请尝试在 sys.exit() 之前调用 pygame.quit() 。另外, pygame.display.flip() 应该在while循环中,但这可能与错误无关。
Izzy
@HavanAgrawal 是的,它对我不起作用。
Izzy
@skrx:谢谢你的回答,对于pygame.display.flip()的缩进错误感到抱歉。我在jupyter notebook中工作。我试着将其保存为.py文件并使用 "python gamefile.py "运行。添加pygame.quit()也不起作用。
python
pygame
python-3.6
Izzy
Izzy
发布于 2017-12-17
1 个回答
Rabbid76
Rabbid76
发布于 2021-05-30
已采纳
0 人赞同

你必须终止应用程序的循环,并通过以下方式解除对所有pygame模块的初始化 pygame.quit() :

def run_game():
    pygame.init()
    screen = pygame.display.set_mode((400, 300))
    pygame.display.set_caption('Alien Invasion')
    run = True
    while run:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False