正如问题所述,我想知道在运行结束时是否有任何实际的方法来查看整个事件队列。我对pygame很新,到目前为止我唯一熟悉的两个方法是:pygame.event.get()和pygame.event.poll()。事实是,这两种方法都删除了它在队列中的相应事件 - 最有可能节省我假设的空间。
这意味着我需要能够在运行结束时打印出整个事件,我的代码如下:
import pygame
pygame.init()
screen = pygame.display.set_mode((500,300))
thing = 0
while thing < 100000000:
thing += 1
event = pygame.event.get()
print (event)
pygame.quit()
这段代码的问题在于,每当我尝试移动pygame窗口时,它都没有响应,我无法与它进行交互,每当我尝试创建一个新的pygame窗口时都会发生这种情况,我能够点击并移动它 - 但是当我点击关闭按钮时,窗口没有响应,我不得不通过控制台关闭它。有没有更有效的替代方法呢?
答案 0 :(得分:1)
您运行长时间运行的while
循环停止窗口 - 它不会立即关闭 - 但您不会从系统获取事件以识别QUIT
事件并退出循环。
当您单击关闭按钮时,它不会关闭窗口。它将事件QUIT
发送到您的程序,您可以决定做什么 - 您可以退出循环然后它结束程序,但您也可以在关闭前保存一些数据,或者您可以询问用户是否确实要退出等等。
获取事件的标准mainloop
是简单的,当您按下结束按钮(事件QUIT
)时它会结束程序。
import pygame
pygame.init()
screen = pygame.display.set_mode((500,300))
# --- mainloop / event loop ---
running = True
while running:
for event in pygame.event.get():
print (event)
if event.type == pygame.QUIT: # <-- closing button was pressed
running = False # it will exit `while` loop
pygame.quit()