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()方法和/或我是如何从字典中调用值的,但是我被卡住了。
帮助?
答案 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()