gpt4 book ai didi

python - Pygame,有什么方法可以从显示器上查看整个事件队列吗?

转载 作者:太空宇宙 更新时间:2023-11-03 14:26:43 24 4
gpt4 key购买 nike

正如问题所述,我想知道是否有任何实际方法可以在运行时结束时查看整个事件队列。我对 pygame 非常陌生,到目前为止我熟悉的与事件相关的唯一 2 个方法是: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 窗口时都会发生这种情况,我能够单击并移动它 - 但是当我单击关闭按钮时,窗口没有响应,我不得不通过控制台将其关闭。有更有效的替代方法吗?

最佳答案

您运行长时间运行的 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()

关于python - Pygame,有什么方法可以从显示器上查看整个事件队列吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47590429/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com