7

Consider these lines in the pygame loop:

ev = pygame.event.poll()
ev.type == pygame.QUIT

From: http://openbookproject.net/thinkcs/python/english3e/pygame.html

From what I understand the function pygame.event.poll() creates an instance of the Event class in the event module of the pygame package.

I. Now ev.type is an attribute call(?) but how do I know which values it can have? How can you even tell from the pygame documentation that it has the possibility to equal pygame.QUIT?

II. What exactly is pygame.QUIT? How does it get a value?

III. help('pygame.QUIT') says pygame.QUIT = class int(object). How do you call this construction?

4

4 回答 4

7
ev = pygame.event.poll()

是对从事件队列返回单个事件的函数的调用(基本上,您的应用程序可能想知道的已发生事件的列表)。它将那个事件(它是一个Event对象)分配给变量ev

ev.type

获取该对象的type属性值Event,它是一个数值常量。

== pygame.QUIT

检查它是否等于定义为的数值常数pygame.QUIT

可能的事件类型在http://www.pygame.org/docs/ref/event.html中列出- 我也在此处复制粘贴了列表(其中还列出了与每个事件一起传递的相关属性):

QUIT             none
ACTIVEEVENT      gain, state
KEYDOWN          unicode, key, mod
KEYUP            key, mod
MOUSEMOTION      pos, rel, buttons
MOUSEBUTTONUP    pos, button
MOUSEBUTTONDOWN  pos, button
JOYAXISMOTION    joy, axis, value
JOYBALLMOTION    joy, ball, rel
JOYHATMOTION     joy, hat, value
JOYBUTTONUP      joy, button
JOYBUTTONDOWN    joy, button
VIDEORESIZE      size, w, h
VIDEOEXPOSE      none
USEREVENT        code
于 2012-04-09T22:34:29.837 回答
6

pygame.QUIT当用户单击窗口的“X”按钮或系统“要求”进程退出时发送。如果忽略,它仍然可以被系统杀死。它可以让您在退出之前保存。

于 2012-04-15T21:02:19.913 回答
5

pygame.QUIT只是一个int恰好在pygame模块内部定义的常量。

>>> import pygame
>>> pygame.QUIT
12

这是文档中的相关页面:http: //www.pygame.org/docs/ref/event.html。您可以看到所有可能的事件类型(就在评论上方)。

于 2012-04-09T22:38:22.547 回答
-1

我不完全确定pygame.event.poll()实际做了什么,但是您可以检测到窗口何时关闭for e in pygame.event.get(): if e.type == pygame.QUIT: print('the cross has been clicked',不知道这是否有帮助,但这可能是您的问题的解决方法

于 2021-01-25T10:52:00.230 回答