我编写了一个python脚本,显示了路径查找算法演变的动画,我想知道如何在主循环达到某个条件时停止它。
我的基本想法(没有任何实际代码)是:
import Tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root, width=800, height=800, background="black")
canvas.pack()
def initialise():
<some code to initialise everything on the canvas>
def move():
<some code for move()>
root.after(1000,move)
root.mainloop()
我希望能够在函数move()中测试一个条件,它允许我停止Tkinter主循环但仍然打开窗口以便你可以看到它,然后能够做其他事情之后(没有窗口,如果它是不可更改的,只要在用户关闭窗口之前它是可见的就没有关系了)
基本上与此类似:
while true: # this represents the Tkinter mainloop
<do something>
if <final condition>:
break
<some other operations on data> # this happens after mainloop stops
答案 0 :(得分:0)
在不破坏窗口的情况下,您无法停止mainloop
。这是Tkinter的基本特征。
你可以做的只是停止动画。您可以完全按照建议执行此操作:在move
方法中添加标记或最终条件。
def move():
if some_condition:
return
...
root.after(1000, move)