【发布时间】:2010-01-26 21:50:50
【问题描述】:
是否有任何好的 GUI 支持将 Pygame 表面作为应用程序中的小部件?
如果这不可能或不切实际,那么哪个 GUI 工具包具有最好的图形组件?我希望通过 SDL 包装器保持快速渲染成为可能。
【问题讨论】:
标签: python user-interface graphics pygame
是否有任何好的 GUI 支持将 Pygame 表面作为应用程序中的小部件?
如果这不可能或不切实际,那么哪个 GUI 工具包具有最好的图形组件?我希望通过 SDL 包装器保持快速渲染成为可能。
【问题讨论】:
标签: python user-interface graphics pygame
不要使用 wxPython,它很难与 Pygame 很好地协同工作,如 Pygame wiki 的 GUI section 中所述。
首先,pygame 依赖于 SDL,这意味着它只能有 一次一个窗口。因此,试图 实现多个 Gtk, Qt, ... 使用 pygame 的应用程序实例, 是不可能的。第二 有问题的原因是那些 工具包使用自己的主循环, 这可能会迫使您使用管道 他们的事件到你的 pygame 实例 反之亦然。并提到一些 简而言之,其他要点:绘制 pygame 窗口上的工具包元素 是不可能的,SDL/pygame 全屏模式会有问题。
相反,请选择该页面底部列出的任何库。我自己使用pgu。
【讨论】:
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/
【讨论】: