我有一个简单的代码可以使用 tkinter 可视化一些数据。单击按钮会绑定(bind)到重绘下一“帧”数据的函数。但是,我希望可以选择以特定频率自动重绘。在 GUI 编程方面,我非常新手(我不必为这段代码做很多事情),所以我的大部分 tkinter 知识都来自于跟随和修改示例。我想我可以使用 root.after 来实现这一点,但我不太确定我从其他代码中理解如何。我的程序的基本结构如下:
# class for simulation data
# --------------------------------
def Visualisation:
def __init__(self, args):
# sets up the object
def update_canvas(self, Event):
# draws the next frame
canvas.delete(ALL)
# draw some stuff
canvas.create_........
# gui section
# ---------------------------------------
# initialise the visualisation object
vis = Visualisation(s, canvasWidth, canvasHeight)
# Tkinter initialisation
root = Tk()
canvas = Canvas(root, width = canvasWidth, height = canvasHeight)
# set mouse click to advance the simulation
canvas.grid(column=0, row=0, sticky=(N, W, E, S))
canvas.bind('<Button-1>', vis.update_canvas)
# run the main loop
root.mainloop()
很抱歉问了一个我确信有一个明显而简单的答案的问题。非常感谢。
最佳答案
使用 Tkinter 执行动画或周期性任务的基本模式是编写绘制单个帧或执行单个任务的函数。然后,使用类似这样的方法定期调用它:
def animate(self):
self.draw_one_frame()
self.after(100, self.animate)
调用此函数一次后,它将继续以每秒 10 个帧的速率绘制帧 - 每 100 毫秒一次。如果您希望能够在动画开始后停止它,您可以修改代码以检查标志。例如:
def animate(self):
if not self.should_stop:
self.draw_one_frame()
self.after(100, self.animate)
然后您将有一个按钮,当单击该按钮时,将 self.should_stop
设置为 False
关于python - 使用 tkinter 的简单动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11502879/