11

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

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

4

4 回答 4

11

不要使用 wxPython,如Pygame wiki的GUI 部分所述,它很难与 Pygame 一起工作。

首先,pygame 依赖于 SDL,这意味着它一次只能有一个窗口。因此,尝试实现多个使用 pygame 的 Gtk、Qt、... 应用程序实例是不可能的。第二个有问题的原因是这些工具包使用它们自己的主循环,这可能会迫使您将它们的事件通过管道传输到您的 pygame 实例,反之亦然。顺便提一下其他几点:在pygame窗口上绘制工具包元素是不可能的,SDL/pygame全屏模式会出现问题。

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

于 2010-01-27T12:01:54.833 回答
6

看看AlbowPGUOcemp

于 2010-01-26T22:07:13.283 回答
4

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

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

我通过一个简单的代码行计数器 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,但我找不到。)

在每种情况下,“最小”数字更能代表工具包的“大小”,因为它不计算空格和注释。

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

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

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

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

戴夫


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

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

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

于 2011-01-17T17:28:40.287 回答
1

在这里你有一个关于如何集成和交互的wxPython解释Pygame

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

于 2010-01-26T22:03:20.930 回答