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

Posted

技术标签:

【中文标题】在没有窗口/GUI 的情况下运行 Pygame【英文标题】:Run Pygame without a window / GUI 【发布时间】:2016-03-24 17:04:30 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

“如果显示器尚未初始化且未设置视频模式,则事件队列将无法真正工作。” https://www.pygame.org/docs/ref/event.html

但是,当然,如果您不是专门讨论事件处理,那么 DrevanTronder 是正确的;您需要做的就是使用“import pygame”导入模块并使用“pygame.init()”对其进行初始化。

希望这会有所帮助!

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

【参考方案3】:

是的,你可以。

import pygame

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

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

【讨论】:

以上是关于在没有窗口/GUI 的情况下运行 Pygame的主要内容,如果未能解决你的问题,请参考以下文章

仅退出 Pygame 窗口

如何在没有 GUI 的情况下运行 makecert.exe?

如何在不关闭 GUI 窗口的情况下停止运行 PyQt5 程序?

Dev-C++ 在没有 GUI 的情况下在后台运行程序

python怎么运行pygame

Debian 在没有桌面的情况下启动 Qt GUI 应用程序