停止Tkinter窗口而不关闭它

时间:2015-10-22 10:11:10

标签: python tkinter

我编写了一个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

1 个答案:

答案 0 :(得分:0)

在不破坏窗口的情况下,您无法停止mainloop。这是Tkinter的基本特征。

你可以做的只是停止动画。您可以完全按照建议执行此操作:在move方法中添加标记或最终条件。

def move():
    if some_condition:
        return
    ...
    root.after(1000, move)