退出 pygame 窗口后出现 pygame 错误

Posted

技术标签:

【中文标题】退出 pygame 窗口后出现 pygame 错误【英文标题】:I get a pygame error after a quit my pygame window 【发布时间】:2021-05-11 12:16:08 【问题描述】:

我想了解如何在 pygame 中显示字体。但我收到一个错误提示 pygame.error: Library not initialized

这个错误发生在我按下十字按钮或退出我的 pygame 窗口之后。

谁能告诉我为什么会发生这个错误,我该如何解决?

import pygame
from pygame.locals import *
import sys
from win32api import GetSystemMetrics
pygame.init()
WIDTH = GetSystemMetrics(0)
HEIGHT = GetSystemMetrics(1)-64
WIDTH_HEIGHT = (WIDTH, HEIGHT)

WINDOW = pygame.display.set_mode(WIDTH_HEIGHT)
pygame.init()
font = pygame.font.Font('freesansbold.ttf', 32)
text = ""

running = True

while running:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            running = False
    text = font.render('Hi', True, (255,255,255))
    WINDOW.blit(text, (0, 0))
    pygame.display.update()

【问题讨论】:

似乎是因为您退出了 pygame 但循环继续运行,直到结束,所以由于您已退出 pygame,字体不再初始化,通常 pygame.quit() 放在外面和之后while 循环。并在 if 语句中只留下 running = False 好的,如果在 pygame.quit() 之后我写 sys.exit() 不要,一来用exit()比较好,二来用pygame.quit()没意义,我给你举个例子 好的,谢谢您解决了我的问题,但是 exit() 和 sys.exit() 之间是否存在任何差异? 是的,有,exit() 更“柔和”,sys.exit() 只是关闭它 【参考方案1】:

这是一种退出方式(只是完成程序):

run = True
while run:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
            
pygame.quit()

这是另一种方式(更有力一点):

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

【讨论】:

以上是关于退出 pygame 窗口后出现 pygame 错误的主要内容,如果未能解决你的问题,请参考以下文章

NameError:没有为pygame定义名称“退出”

Pygame没有在按键时退出

启动 exe 后,终端窗口与 pygame 窗口一起出现

Pygame在一定时间后退出[重复]

python怎么运行pygame

Pygame 窗口几秒钟后没有响应