【问题标题】:What's the best way to add a GUI to a Pygame application?将 GUI 添加到 Pygame 应用程序的最佳方法是什么?
【发布时间】:2010-01-26 21:50:50
【问题描述】:

是否有任何好的 GUI 支持将 Pygame 表面作为应用程序中的小部件?

如果这不可能或不切实际,那么哪个 GUI 工具包具有最好的图形组件?我希望通过 SDL 包装器保持快速渲染成为可能。

【问题讨论】:

    标签: python user-interface graphics pygame


    【解决方案1】:

    不要使用 wxPython,它很难与 Pygame 很好地协同工作,如 Pygame wiki 的 GUI section 中所述。

    首先,pygame 依赖于 SDL,这意味着它只能有 一次一个窗口。因此,试图 实现多个 Gtk, Qt, ... 使用 pygame 的应用程序实例, 是不可能的。第二 有问题的原因是那些 工具包使用自己的主循环, 这可能会迫使您使用管道 他们的事件到你的 pygame 实例 反之亦然。并提到一些 简而言之,其他要点:绘制 pygame 窗口上的工具包元素 是不可能的,SDL/pygame 全屏模式会有问题。

    相反,请选择该页面底部列出的任何库。我自己使用pgu。

    【讨论】:

      【解决方案2】:

      看看Albow、PGU或Ocemp。

      【讨论】:

        【解决方案3】:

        Albow 和 Ocemp 没有得到积极维护。 PGU 现在由 Peter Rogers 维护,Victor Kam 已将其大部分转换为 Python 3。

        我尝试在 Python 3 下运行 5 个 pygame GUI 工具包:Albow、GooeyPy、PGU、pqGUI 和 sgc。 (我没有让 GooeyPy 与 Python 3 一起工作,但其他人做到了。)

        我通过一个简单的 Lines-Of-Code 计数器运行它们中的每一个 http://code.activestate.com/recipes/527746-line-of-code-counter/ 测量它们的大小:

        这些是结果:

        Albow code        min=2810, max=4551    (max = 162% of min)
        Albow\demo        min= 453, max= 649
        
        GooeyPy\gooeypy   min=2034, max=3941    (max = 194% of min)
        GooeyPy\examples  min= 178, max= 351
        
        pgu\pgu           min=2910, max=7047    (max = 242% of min)
        incl. pgu\pgu\gui min=1678, max=4638    (max = 276% of min)
        pgu\examples      min= 822, max=2527
        
        pqGUI.py          min=1586, max=1834    (max = 116% of min)
        Example.py        min= 178, max= 225
        
        sgc (incomplete)  min= 889, max=1243    (max = 140% of min)
        

        (我也想尝试一下 Shandy Brown 制作的 poutine,但我找不到。)

        在每种情况下,“min”数字更能代表工具包的“大小”,因为它不包括空格和 cmets。

        当“最大”数非常接近于最小数时,这意味着代码中没有太多空格,也没有多少 cmets。 pqGUI 就是一个例子,因为它几乎没有 cmets,这太糟糕了,因为(IMO)它制作了最好看的小部件。

        我喜欢 pqGUI,因为我喜欢它制作的小部件的外观,但它不受支持且未记录在案,而且我找不到作者。

        这五个中只有两个得到积极维护/开发:PGU 和 sgc,而 sgc 是新的且不完整的。

        这使得 PGU 成为明显的领导者。

        戴夫


        附: (10/23/2012) -- 我为 PyGame 创建了自己的 GUI 工具包。它是基于小部件的,并使用 pygame 事件进行通信,因此可以轻松地将其放入现有的 pygame 程序中,而无需接管事件循环。它支持表单、按钮、窗口、模式和非模式消息框和对话框、垂直菜单、文本输入框和滑块(滚动条)。它可以流畅地处理重叠控件和表单内的表单。

        但是,它并不完整:它缺少一些您可能想要的控件,例如文件打开对话框和表格。确实存在的控件看起来不错,但标题栏和滚动条等功能的宽度是固定的像素数,而不是可调整大小的。该代码有很好的注释,并且有一个带有使用示例的演示应用程序,但没有正确的使用方法文档。它是预测试版,所以一切都可能发生变化。

        尽管有这些限制,如果有人想尝试一下,请通过电子邮件与我联系。询问“DavesGUI”。我的电子邮件地址在这里:http://www.burtonsys.com/email/

        【讨论】:

          【解决方案4】:

          Here你有一个关于如何集成和交互wxPython和Pygame的解释。

          在我看来,最好的 GUI 工具包是 wxPython(wxWidgets 的绑定),它具有几乎所有东西的 GUI 小部件,包括 OpenGL 小部件,并且一些 work 也使用 SDL 完成。

          【讨论】:

            猜你喜欢
            • 2010-11-07
            • 2014-04-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-08-10
            • 2021-09-15
            • 2010-12-28
            • 1970-01-01
            相关资源
            最近更新 更多