使用带有tkinter的asyncio及其ttk.progressbar小部件:如何强制asyncio任务结束?

时间:2019-02-27 05:19:42

标签: python tkinter progress-bar python-asyncio

以下是我使用asynciotkinter及其ttk.Progressbar()小部件进行操作的脚本。我在参考了这些引用(12345)后得出了它。我让progessbar小部件正常工作。但是我似乎无法取消(停止)负责更新我创建的asyncio任务对象,以取代通常的tkinter.Tk()事件Tk()。这样,在Tk()窗口销毁后,我看不到命令​​提示符或mainloop()提示符。 我应该如何终止任务对象>>>我正在使用python 3.6。我希望root.update_task可以结束已取消的任务,但没有结束。 为什么它不起作用?谢谢。

loop.shutdown_asyncgens()

1 个答案:

答案 0 :(得分:2)

使用run_until_complete,当您取消任务时,您将退出该函数。您一直在使用run_forever而不是停止循环,所以您永远不会越过该函数。

    loop.run_until_complete(root.update_task)
    #loop.run_forever()

另请参阅run_forever的文档

loop.run_forever()
    Run the event loop until stop() is called.