运行 Pygame 没有 window / GUI

Run Pygame without a window / GUI

是否可以 运行 pygame 而不创建 pygame window、表面或 GUI? 我想使用某些 pygame 功能,但我不想弹出 GUI。

例如,除非我在 pygame 中设置了 window,否则此功能将无法使用。

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"

是的,你可以。

import pygame

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

这将为您提供自 pygame 启动后未弹出 GUI 的时间(以毫秒为单位)。

DrevanTronder 是正确的,但他没有正确回答问题,因为您问的是如何在没有 GUI 的情况下在 pygame 中执行事件,如您的示例编码所示。

这是不可能的。当 运行 一个 Pygame 程序时,它只检测 Pygame window 被 select 编辑的事件。如果没有 Pygame window,select 就没有任何东西,所以活动将无法进行。以下是直接从 Pygame 文档中提取的:

"If the display has not been initialized and a video mode not set, the event queue will not really work." https://www.pygame.org/docs/ref/event.html

但是,当然,如果您不是专门谈论事件处理,那么 DrevanTronder 是正确的;您需要做的就是使用 "import pygame" 导入模块并使用 "pygame.init()".

对其进行初始化

希望对您有所帮助!

如果你是运行Linux,你可以使用Xvfb

基本上,Xvfb "captures" 所有与显示相关的计算并在内存中执行它们,而无需显示。

它可能不适合您的目的,这取决于您的 OS' 行为。仅当 PyGame window 是活动的 window 时,捕获 PyGame 中的键才有效,但看到您无法在此处设置活动的 window,如果没有其他解决方法,这可能无法工作。