我应该和Pygame一起使用什么gui工具包?

时间:2010-07-27 11:42:49

标签: python user-interface widget pygame

我正在制作一款游戏,需要能够在pygame表面中弹出gui元素。 This问题不是我想要的,因为wxPython绕过SDL表面而不是它内部。到目前为止,我在此问题空间中只看到ocemppguGooeyPy

  • Ocemp巨大而且看起来很狡猾。它提到了Python 2.3,我在快速浏览cvs repo时找到的最新文件是2年。
  • 我无法让GooeyPy工作(虽然我没有努力;鸡蛋和Debian不是朋友),v0.2最后一次更新于2009年2月。
  • 我一直在和pgu一起工作,但似乎没有得到维护(上次更新11/2009,原始维护者放弃了它),它开始显示它的年龄。它使用旧样式类并抛出字符串异常。

所以,我的问题是,这是:我应该使用什么gui工具包来制作你的pygame应用程序中相当可点击的按钮?有没有积极的发展?

编辑,2011年9月

看起来PGU仍在维护中。最后一次提交是从4天前开始的。

6 个答案:

答案 0 :(得分:2)

我不知道任何pygame gui的东西,但它不应该非常难以推出自己的(嘿,也许让它开源!)

如果您只是做一些简单的按钮,您可以使用GIMP或Photoshop或其他东西制作两个(或三个)图像 - 一个向上,向下和可能的悬停按钮,然后您将编写自己的事件循环/处理程序会做这样的事情:

  1. 获取鼠标位置
  2. 鼠标悬停在任何按钮上(并且没有按下任何按钮)?
  3. 显示悬停图片
  4. 鼠标悬停在按钮上并单击鼠标按钮?
  5. 与该按钮相关联的火灾事件
  6. 见1
  7. 这有点简化,但它至少应该给你一个起点(如果没有其他人有任何pygame GUI库)

答案 1 :(得分:2)

尽管它已经老了,但你真的没有gui库,你只需要使用精灵。对于标签,您将获取一个精灵并为其提供要渲染的字体等。对于按钮,它继承标签并添加活动状态以检测更改并导致其他事件发生。滚动条与按钮的作用相同,只是更改标签或其他值

答案 2 :(得分:1)

答案 3 :(得分:1)

另见答案: What's the best way to add a GUI to a Pygame application?

特别是,如果有人想使用DavesGUI,我的PyGame预测试GUI工具包,请给我发电子邮件。在my reply, there末尾有一个指向我的电子邮件地址的链接。

答案 4 :(得分:0)

我创建了一个可以在pygame中使用的函数,而无需导入任何额外的库。

def gui(x1, y1, x2, y2, button):
    mouseX, mouseY = pygame.mouse.get_pos()
    if mouseX >= x1 and mouseX <= x2 and mouseY >= y1 and mouseY <= y2:
        if button:
            return True
        else:
            return False
    else:
        return False

你这样调用函数(我使用菜单作为例子)。

topCornerX = #X coordinate of top right corner
topCornerY = #Y coordinate of top right corner
bottomCornerX = #X coordinate of bottom left corner
bottomCornerY = #Y coordinate of bottom left corner

while menu:
    for event in pygame.event.get():
        mouseLeft, mouseMiddle, mouseRight = pygame.mouse.get_pressed()
        if gui(topCornerX, topCornerY, bottomCornerX, bottomCornerY, '''mouseLeft, mouseMiddle, or mouseRight''')
            menu = False

然后你会继续你的输出。

这是通过获取矩形的坐标并将鼠标位置与矩形内部进行比较来实现的,如果它们单击正确的按钮并且位于矩形内,则为True。希望这会有所帮助。

答案 5 :(得分:0)

我同意milleja46关于不使用gui的事情,

我在这里找到了2个简单的菜单弹出程序:

复杂的菜单:http://code.google.com/p/simple-pygame-menu/

简单的弹出窗口:How to specify what actually happens when Yes/No is clicked with ctypes MessageBoxW?