我怎样才能使这个 Tkinter 应用 运行 更快
How can I make this Tkinter app run faster
我在 Python Tk 中写了一个简单的 Conway 生命游戏,但是它太慢了!
在我的 PC 上,它 运行 还算不错,但在我学校的计算机上,它无法达到每秒 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")
我不知道是否需要粘贴整个 class,但如果需要,我会附加其余代码。
我只能建议重写代码而不嵌入两个 for 循环(这会提高你的时间复杂度),但我不确定这是否会完全解决你的问题,因为我不知道是什么您的 class.
中还有其他情况
祝你好运!
在 canvas 上创建项目很慢,创建的越多就越慢(即使每次都删除它们)。相反,只需创建一次矩形,然后在每一代上简单地重新配置它们。
create_rectangle
方法returns一个整数id。保存这些id,然后使用itemconfigure
方法改变颜色。
我在 Python Tk 中写了一个简单的 Conway 生命游戏,但是它太慢了!
在我的 PC 上,它 运行 还算不错,但在我学校的计算机上,它无法达到每秒 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")
我不知道是否需要粘贴整个 class,但如果需要,我会附加其余代码。
我只能建议重写代码而不嵌入两个 for 循环(这会提高你的时间复杂度),但我不确定这是否会完全解决你的问题,因为我不知道是什么您的 class.
中还有其他情况祝你好运!
在 canvas 上创建项目很慢,创建的越多就越慢(即使每次都删除它们)。相反,只需创建一次矩形,然后在每一代上简单地重新配置它们。
create_rectangle
方法returns一个整数id。保存这些id,然后使用itemconfigure
方法改变颜色。