从Python中获取for循环的dict值

时间:2014-03-17 01:16:09

标签: python-3.x pygame

TL; DR:

我有一个Scene类和scene01和scene02,它们都是Scene的实例。 scene01有一个按钮。 此按钮位于名为按钮的字典中,例如{button_next:scene02}

for循环如下:

def loop(self):                                                         #SCENE LOOP
        while True:
            for event in pg.event.get():
                if event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE):
                    pg.quit()
                    sys.exit()
                    for k, v in self.buttons.items():
                        if 'click' in k.handleEvent(event):
                            self.goto(v)
            pg.display.update()
k.handleEvent(event)中的

'click'来自PygButton小部件。当鼠标单击按钮时返回。 Button是PygButton()类的一个实例。

goto()检查键值对中的值是“退出”(调用应用程序退出)还是场景实例,例如scene01,调用场景循环,绘制新屏幕和新按钮。

应用程序启动,第一个场景和按钮一样,但点击它们没有响应。 Escape退出应用程序,以便循环正常工作。通过逃生退出应用程序并不会从IDLE返回任何内容。

我认为问题在于goto()方法和/或我是如何从字典中调用值的,但是我被卡住了。

帮助?

1 个答案:

答案 0 :(得分:0)

你的缩进似乎已经消失了。您确定只有在用户退出时才会运行第二个for循环,因为这是您设置它的方式。试试这个:

def loop(self):                                                         #SCENE LOOP
        while True:
            for event in pg.event.get():
                if event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE):
                    pg.quit()
                    sys.exit()
                for k, v in self.buttons.items():
                    if 'click' in k.handleEvent(event):
                        self.goto(v)
            pg.display.update()