【问题标题】:Run Pygame without a window / GUI在没有窗口/GUI 的情况下运行 Pygame
【发布时间】: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"

【问题讨论】:

    标签: user-interface window pygame surface


    【解决方案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 的时间(以毫秒为单位)。

        【讨论】:

          猜你喜欢
          • 2015-06-15
          • 1970-01-01
          • 2018-06-06
          • 2011-04-29
          • 1970-01-01
          • 1970-01-01
          • 2022-01-09
          • 2011-02-25
          • 1970-01-01
          相关资源
          最近更新 更多