我正在尝试将一些GUI元素(带有按钮的对话框)添加到我用pygame编写的游戏中。我四处寻找一个合适的图形用户界面工具包,结果
pgu
. 不管怎样,我正试图让它弹出一个对话框,它可以(有点),但它没有关闭。
下面是我的代码的简化版本,它只显示了我关心的行为:
import pygame, sys
from pgu import gui
screen = None
WIDTH = 640
HEIGHT = 480
def init_pygame():
global screen
pygame.display.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT), pygame.DOUBLEBUF)
pygame.display.set_caption('Testing PGU')
class SimpleDialog(gui.Dialog):
def __init__(self):
title = gui.Label("Spam")
main = gui.Container(width=20, height=20)
super(SimpleDialog, self).__init__(title, main, width=40, height=40)
def close(self, *args, **kwargs):
print "closing"
return super(SimpleDialog, self).close(*args, **kwargs)
def run():
init_pygame()
app = gui.App()
dialog = SimpleDialog()
app.init(dialog)
app.paint(screen)
pygame.display.flip()
while True:
app.paint(screen)
pygame.display.flip()
for event in pygame.event.get():
if event.type == pygame.MOUSEBUTTONDOWN:
if event.button == 3:
print "opening"
dialog.open()
else:
app.event(event)
elif event.type == pygame.QUIT:
sys.exit()
else:
app.event(event)
if __name__=='__main__':
run()
我看到的行为:一个窗口以全屏版本的对话框打开。我所做的一切都不会关闭它,尽管右键单击将在我的控制台上打印“打开”,左键单击小红圈将使它打印“关闭”。看起来对话框使用的是整个背景面,而不是一个较小的背景面。
我想看到的行为:一个大的黑屏出现了(稍后我会画出来),当我右击它时,一个小窗口打开。当我左键单击关闭按钮时,窗口就消失了。
我怀疑这与我没有使用桌面这一事实有关,但我不希望整个游戏都存在于图形用户界面中。
现在,为了明确起见,问题是:如何修改代码以从我看到的行为到我想看到的行为?如果有人知道比PGU更新维护的内容,我可以使用不同的GUI库。