【问题标题】:Pygame with Multiple Windows具有多个窗口的 Pygame
【发布时间】:2015-04-23 01:09:39
【问题描述】:

我需要构建一个具有多个窗口的应用程序。在其中一个窗口中,我需要能够玩一个简单的游戏,而另一个窗口必须显示问题并获得影响游戏的用户的响应。

(1) 我想使用 pygame 来制作游戏。有没有一种简单的方法可以让 pygame 在多个窗口中运行?

(2)如果没有简单的方法来解决(1),是否有一种简单的方法可以使用其他一些 python GUI 结构来让我同时运行 pygame 和另一个窗口?

【问题讨论】:

    标签: python user-interface wxpython pygame


    【解决方案1】:

    简短的回答是否定的,在同一个进程中创建两个 pygame 窗口是不可能的(截至 2015 年 4 月)。如果你想用一个进程运行两个窗口,你应该查看pygletcocos2d

    如果您必须使用 pygame,另一种方法是使用进程间通信。您可以有两个进程,每个进程都有一个窗口。他们将使用套接字相互传递消息。如果你想走这条路,请查看套接字教程here

    【讨论】:

    • 套接字可能是太低级的解决方案。 ZeroMq 或其他类似的库可能足以来回推送消息。
    【解决方案2】:

    在内部 set_mode() 可能会设置一个指针,该指针表示唯一显示器的内存。所以如果我们写:

    screenA = pygame.display.set_mode((500,480), 0, 32)
    screenB = pygame.display.set_mode((500,480), 0, 32)
    

    例如,我们可以稍后再做类似的事情:

    screenA.blit(background, (0,0))
    screenB.blit(player, (100,100))
    

    两个 blit() 调用将在同一个表面上进行 blit。 screenA 和 screenB 指向相同的内存地址。在 pygame 中很难使用 2 个窗口。

    【讨论】:

      【解决方案3】:

      是的,这是可能的。 SDL2 能够打开多个窗口。在示例文件夹中,您可以查看“video.py”。

      https://github.com/pygame/pygame/blob/main/examples/video.py

      "这个例子需要 pygame 2 和 SDL2。_sdl2 是实验性的,会改变。"

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多