问题是,即使你打电话
print_sleep与
True停止循环,已经有等待消防挂起的工作。按下停止按钮不会触发新的作业,但是旧的作业仍然存在,并且当它自己调用时,它将传入False,这将导致循环继续。
您需要取消待处理的作业,以使其不运行。例如:
def cancel(): if self._job is not None: root.after_cancel(self._job) self._job = Nonedef goodbye_world(): print "Stopping Feed" cancel() button.configure(text = "Start Feed", command=hello_world)def hello_world(): print "Starting Feed" button.configure(text = "Stop Feed", command=goodbye_world) print_sleep()def print_sleep(): foo = random.randint(4000,7500) print "Sleeping", foo self._job = root.after(foo,print_sleep)
注意:请确保在
self._job某处进行初始化,例如在应用程序对象的构造函数中进行初始化。



