在没有窗口/GUI的情况下运行Pygame



是否可以在不创建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"

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

这是不可能的。当运行Pygame程序时,它只在选择Pygame窗口时检测事件。如果没有Pygame窗口,就没有什么可选择的,因此事件将不起作用。以下内容直接来自Pygame文档:

如果显示器没有初始化,也没有设置视频模式,事件队列将无法正常工作https://www.pygame.org/docs/ref/event.html

但是,当然,如果你没有具体谈论事件处理,那么DrevanTronder是正确的;您所需要做的就是用"import-pygame"导入模块,并用"pygame.init()"初始化它。

希望这能有所帮助!

可以。

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

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

如果您运行的是Linux,则可以使用Xvfb。

基本上,Xvfb"捕获"所有与显示相关的计算,并在内存中执行这些计算,而无需显示。

它可能不适合您的目的,这取决于您的操作系统的行为。只有当PyGame窗口是活动窗口时,在PyGame中捕获密钥才能工作,但由于您无法在此处设置活动窗口,如果没有其他解决方案,这可能无法工作。

最新更新