Pygame窗口无法关闭。

3

我在YouTube上找到了一个教程,在那个视频中,这位讲师运行了以下代码:

import pygame
pygame.init()

win = pygame.display.set_mode((500, 500))
pygame.display.set_caption("Testing")

run = True
while run:
    pygame.time.delay(100)

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

pygame.quit()

如果事件类型是pygame.QUIT:

当我在for循环中使用"pygame.quit"而不是 "pygame.QUIT"时,窗口就不会关闭。我是一个完全的新手。这是一条必须要用大写字母书写的命令吗?有人能解释一下为什么吗?


2
因为Python和许多其他主流编程语言一样,是区分大小写的。一个名为foo的变量、对象或函数等只能通过foo来访问,而不能通过FOOFoo来访问。 - sloth
“quit”是一个函数,要使用它,您需要输入“quit()”。 “QUIT”是表示事件类型的数字,可以与其他数字进行比较,以便决定要做什么。它们是完全不同的东西。 - Peter Wood
2个回答

1
因为pygame.quit()会使系统退出,而exit()则关闭该窗口。
for event in pygame.event.get():
   if event.type == pygame.QUIT:
      pygame.quit()
      exit()

更新

Event(事件)对象有一个成员变量(也称为属性或属性),名为type(类型),它告诉我们对象代表什么类型的事件。Pygame在pygame.locals模块中为每种可能的类型都有一个常量变量。

if event.type == pygame.QUIT:

检查事件(Event)对象的类型(type)是否等于常量QUIT

这就是为什么我们要检查Event对象是否为退出事件,然后调用pygame.quit()和exit()函数。pygame.quit()函数有点类似于pygame.init()函数的相反功能:它运行代码来停用Pygame库。

简而言之; QUIT表示一种事件类型,pygame.quit()是一个函数


我指的是for循环中的"pygame.QUIT:"。对此造成的不便,我很抱歉。 - VolviX

-1

我使用这个,它很有效

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

1
请更加详细地说明您的答案,并提供解释。这里有相关解释。 - rawrex
对不起,我是个新手,但我发现这段代码可行。 - Azka Hamidzan F.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接