向Pygame应用程序添加GUI的最佳方法是什么?

时间:2010-01-26 21:50:51

标签: python user-interface graphics pygame

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

如果这不可能或不实用,哪个GUI工具包具有最佳图形组件?我希望通过SDL包装器保持快速渲染。

4 个答案:

答案 0 :(得分:10)

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

  

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

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

答案 1 :(得分:6)

查看AlbowPGUOcemp

答案 2 :(得分: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,但我找不到它。)

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

当“最大”数字非常接近最小数字时,意味着代码中没有太多空格和注释。 pqGUI举例说明了,因为它几乎没有任何评论,这太糟糕了,因为(IMO)它制作了最漂亮的小部件。

我喜欢pqGUI因为我喜欢它所做的小部件的外观,但是它不受支持且没有文档记录,我找不到作者。

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

这使PGU成为明确的领导者。

戴夫


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

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

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

答案 3 :(得分:1)

Here您有关于如何整合和进行互动的解释wxPythonPygame

我认为最好的GUI工具包是wxPython(对wxWidgets的绑定),其中包含几乎所有内容的GUI小部件,包括OpenGL小部件,还有一些work也已用SDL完成。