不需要窗口/GUI的情况下运行Pygame

9

是否可以在不创建pygame窗口、画布或GUI的情况下运行pygame?我想利用某些pygame函数,但不想弹出GUI。

例如,除非我在pygame中设置了一个窗口,否则此函数将无法工作。

running = True

def mainloop():
while True:

    for event in pygame.event.get():
        if ( event.type == pygame.QUIT ) or \
        ( event.type == pygame.KEYDOWN and \
        ( event.key == pygame.K_ESCAPE) ):
            running = False
            print "quit"
            pygame.quit()

        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_RETURN:
                print "working"
3个回答

6
DrevanTronder是正确的,但他没有正确回答问题,因为你正在询问如何在pygame中进行无GUI事件,就像你的示例编码中所看到的那样。
这是不可能的。运行Pygame程序时,只有选择了Pygame窗口才能检测事件。如果没有Pygame窗口,就没有什么可以选择的,因此事件将无法工作。以下内容直接从Pygame文档中提取:
“如果未初始化显示并且未设置视频模式,则事件队列将无法正常工作。” https://www.pygame.org/docs/ref/event.html 但是,当然,如果你不是特别谈论事件处理,那么DrevanTronder是正确的;你只需要导入模块“import pygame”并用“pygame.init()”进行初始化。
希望这可以帮助你!

1
是的,你可以。
import pygame

pygame.init()
while 1:
    print pygame.time.get_ticks()
    pygame.time.wait(10)

这将给你自pygame启动以来的毫秒级时间,而无需弹出GUI界面。

1
如果您正在运行Linux,您可以使用Xvfb。基本上,Xvfb“捕获”所有与显示相关的计算,并在内存中执行它们,而不会显示在屏幕上。根据您的操作系统行为,它可能不适合您的目的。在PyGame中捕获键只能在PyGame窗口是活动窗口时才能工作,但是由于您无法设置活动窗口,因此这可能需要额外的解决方法。

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