如何解决sys.exit和pygame.quit和os._exit0无法关闭pygame显示窗口
sys.exit()和pygame.quit()通常对我有用。我目前正在尝试使用类和类属性。我的猜测是,由于在类中如何创建屏幕对象,因此无法关闭屏幕对象?
我不会打印打印语句-我检查了它是否正在注册quit事件。
请帮助!
import pygame
import os,sys,random,math
class Game():
active = True
cell_size = 20
max_cell_number = 30
welcome = True
def __init__(self):
pygame.init()
self.screen = pygame.display.set_mode(size = (Game.cell_size*Game.max_cell_number,Game.cell_size*Game.max_cell_number))
self.clock = pygame.time.Clock()
class Background():
def __init__(self):
image1 = pygame.image.load('/assets/image1.png').convert()
image2 = pygame.image.load('/assets/image2.png').convert()
image3 = pygame.image.load('/assets/image3.png').convert()
image4 = pygame.image.load('/assets/image4.png').convert()
image5 = pygame.image.load('/assets/image5.png').convert()
self.images = [image1,image2,image3,image4,image5]
def generate_background(self):
image_number = random.randint(0,4)
image = self.images[image_number]
return image
class Cards():
def __init__(self):
pass
def show(self,welcome):
if welcome:
self.WelcomeScreen()
else:
self.EndScreen()
class WelcomeScreen():
def __init__(self):
image = self.Background()
image = image.generate_background
self.screen.blit(image,(0,0))
game = Game()
while True:
if game.active:
for event in pygame.event.get():
if event == pygame.QUIT:
print("quit")
pygame.quit()
sys.exit(0)
else:
for event in pygame.event.get():
if event == pygame.QUIT:
pygame.quit()
sys.exit()
game.Cards.show(Game.welcome)
game.clock.tick(120)
pygame.display.update()
解决方法
您需要将事件的类型与pygame.QUIT
进行比较,因为原始事件将始终只是Event
类的一个实例。
已更正的while
循环:
while True:
if game.active:
for event in pygame.event.get():
if event.type == pygame.QUIT:
print("quit")
pygame.quit()
sys.exit(0)
else:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
game.Cards.show(Game.welcome)
game.clock.tick(120)
pygame.display.update()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。