from tkinter import *
from tkinter import ttk
Lastx, lasty = 0,0
GridSize="410x520"
def reset():#Resets the grid size to the size set in the slider and randomizes cells.
global grid
global GridSize
gridMaker()
canvas.delete("all")#Clears the screen
答案 0 :(得分:4)
你的CellSwitcher
函数遍历单元格中的所有项目,当它最终只修改九个单元格(本身及其8个邻居)时,对吗?为什么迭代每个单元格?如果您知道单击的单元格(例如:第3行,第2列),您可以轻松计算相邻单元格。因此,部分答案是删除所有单元格上的迭代,并用直接查找单击的单元格及其邻居来替换它。
此外,您的重置功能调用CellSwitcher
,这似乎有点过分。如果你是随机设置每个单元格的颜色,为什么要通过CellSwitcher,因为它改变了所有邻居的颜色?
也许最大的罪魁祸首是你在每次调用CellSwitcher
时重新创建所有画布对象,而不删除任何旧对象。没有理由这样做 - 只创建一次所有画布对象,然后使用画布的itemconfig方法更改它们。
当您拥有大量商品时,画布会出现性能问题。在您的情况下,GUI首次出现后,您已经创建了9800个画布项。单击单个单元格,画布现在有10,200个项目。等等。画布可以很容易地处理成千上万的物品,甚至成千上万。但是,当我将滑块移动到20时,最终会在画布上创建高达125,600个对象,这肯定会导致画布表现不佳。