0

因此,几个月前,我早些时候提出了一个类似的问题,但我似乎无法应用与我之前的问题相同的规则/法律。就像我的名字一样,我对 Python 的理解非常基础,所以我对为什么他的代码不起作用感到困惑......

每次我加载一个新屏幕时,旧的一组框应该消失,只有新的框应该留在那里。然而,这不是发生的事情。这里有图片来演示: 在此处输入图像描述 在此处输入图像描述

链接到完整代码。

但是我认为问题可能出在这部分代码中:

def deletePanes(self):

    print("delete panes")
    Panes = []
    self.NoOfPanes = 0

我还调用Panes = []了位于class Application():. 问题可能是我两次调用它吗?我的意思是,是否有可能一个Panes列表中有旧框,而一个列表中有新框Panes,所以当在 PyGame 屏幕上绘制时,它会同时绘制旧框和新框?(如果您查看完整代码,所有这些可能会更有意义)

感谢您提前提供任何帮助。

4

2 回答 2

2

你打电话时

Panes = []

在函数内部,它创建一个新的局部变量Panes并将其设置为一个空列表。

如果它是一个全局变量,你应该调用

Panes[:] = []

如果它在课堂上,你应该打电话

self.Panes = []
于 2014-01-22T18:43:46.123 回答
1

Panes是一个局部变量,不会改变您对Panes. 您需要制作Panes global或实例变量。在代码中引用的每个位置执行相同的操作Panes

于 2014-01-22T18:42:45.247 回答