我在Python Tk中写过一个简单的Conway生命游戏,但它太慢了!
在我的电脑上它运行得有点好,但在我的学校电脑上,它不能达到10次刷新。我怀疑绘图部分滞后很多,我该如何解决?
def drawCells(self):
self.board.delete(tk.ALL)
for i in range(self.gridsize):
for j in range(self.gridsize):
if self.cnow[j][i] == 1: # cells now list
rect = self.board.create_rectangle(
i * self.grid,
j * self.grid,
(i + 1) * self.grid,
(j + 1) * self.grid,
fill="#000000")
我不知道是否有必要粘贴整个班级,但如果需要,我会附加剩下的代码。
答案 0 :(得分:3)
在画布上创建项目的速度很慢,创建的越多,它就越慢(即使每次都删除它们)。相反,只需创建一次矩形,然后在每一代中重新配置它们。
create_rectangle
方法返回一个整数id。保存这些ID,然后使用itemconfigure
方法更改颜色。
答案 1 :(得分:0)
我所能建议的是重写代码而不嵌入两个for循环(这有时会提高你的时间复杂度),但我不确定这是否会完全解决你的问题,因为我不知道你班上还有什么。
祝你好运!