我正在制作一款游戏,需要能够在pygame表面中弹出gui元素。 This问题不是我想要的,因为wxPython绕过SDL表面而不是它内部。到目前为止,我在此问题空间中只看到ocemp,pgu和GooeyPy。
所以,我的问题是,这是:我应该使用什么gui工具包来制作你的pygame应用程序中相当可点击的按钮?有没有积极的发展?
编辑,2011年9月
看起来PGU仍在维护中。最后一次提交是从4天前开始的。
答案 0 :(得分:2)
我不知道任何pygame gui的东西,但它不应该非常难以推出自己的(嘿,也许让它开源!)
如果您只是做一些简单的按钮,您可以使用GIMP或Photoshop或其他东西制作两个(或三个)图像 - 一个向上,向下和可能的悬停按钮,然后您将编写自己的事件循环/处理程序会做这样的事情:
这有点简化,但它至少应该给你一个起点(如果没有其他人有任何pygame GUI库)
答案 1 :(得分:2)
尽管它已经老了,但你真的没有gui库,你只需要使用精灵。对于标签,您将获取一个精灵并为其提供要渲染的字体等。对于按钮,它继承标签并添加活动状态以检测更改并导致其他事件发生。滚动条与按钮的作用相同,只是更改标签或其他值
答案 2 :(得分:1)
来自python wiki的Albow http://wiki.python.org/moin/PythonGameLibraries
答案 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?