如何让这款Tkinter应用程序运行得更快

时间:2018-01-31 15:36:23

标签: python python-3.x performance tkinter tkinter-canvas

我在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")

我不知道是否有必要粘贴整个班级,但如果需要,我会附加剩下的代码。

2 个答案:

答案 0 :(得分:3)

在画布上创建项目的速度很慢,创建的越多,它就越慢(即使每次都删除它们)。相反,只需创建一次矩形,然后在每一代中重新配置它们。

create_rectangle方法返回一个整数id。保存这些ID,然后使用itemconfigure方法更改颜色。

答案 1 :(得分:0)

我所能建议的是重写代码而不嵌入两个for循环(这有时会提高你的时间复杂度),但我不确定这是否会完全解决你的问题,因为我不知道你班上还有什么。

祝你好运!