退出 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 错误的主要内容,如果未能解决你的问题,请参考以下文章