我有一個簡單的代碼來使用tkinter可視化一些數據。按鈕點擊被綁定到重繪下一個「幀」數據的功能。不過,我想要選擇以特定頻率自動重繪。在GUI編程方面,我非常青睞(我不需要爲此代碼做很多工作),所以我的大部分tkinter知識都來自於遵循和修改示例。我想我可以使用root.after來實現這一點,但我不太確定我是否理解其他代碼。我的方案的基本結構如下:使用tkinter的簡單動畫
# 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()
道歉要求,我敢肯定,有一個明顯的和簡單回答的問題。非常感謝。
非常感謝布賴恩;我做了類似的事情,但不知何故,我的事件綁定中有一件事弄亂了事情。現在都在工作。 – user1528634 2012-07-17 09:11:23
如果允許無限期運行,第一個版本會導致錯誤的最大遞歸深度達到 – 2015-07-13 14:36:43
@rahultyagi:不,因爲它不是遞歸函數,所以不可能超過最大遞歸深度。至少,不是字面意義上的。該函數不會自行調用,它只是安排自己在未來再次運行。堆棧深度永遠不會超過1. – 2015-07-13 14:39:35