python - tkinter:当调用`root.destory()`时,终止进程以`root.after`开始?
问题描述
我想我有一个概念问题。我想同时启动root.after
和终止 GUI 程序和进程。目前,root.after
在 GUI 被销毁后,开始的过程仍在继续。我需要如何正确执行此操作?
MWE:遍历一个列表并询问是否将 1 替换为 0。exit
全部替换为 1后,按 即可正常关闭程序。否则,f
即使 GUI 消失,流程也会继续进行:
import tkinter as tk
l = [0,1,1,0,1,0,1]
root = tk.Tk()
var = tk.IntVar()
termination=False
def update_l(i):
l[i] = 0
def g(i):
def replace():
update_l(i)
b1.destroy()
b2.destroy()
var.set(var.get()+1)
def keep():
b1.destroy()
b2.destroy()
var.set(var.get()+1)
b1 = tk.Button(root, text='replace', command=replace)
b1.pack()
b2 = tk.Button(root, text='keep', command=keep)
b2.pack()
root.wait_variable(var)
f()
def f():
print(l)
for i, j in enumerate(l):
if termination:
break
if j:
g(i)
break
def terminate():
global termination
termination = True
root.destroy()
b = tk.Button(root, text='exit', command=terminate)
b.pack()
root.after(200, f)
root.mainloop()
解决方案
推荐阅读
- r - 为什么这段代码显示 dwapi::configure()?
- swift - Copy and pasting selected text from the current, from a Mac sandboxed application
- java - Gradle - dependencies with because statement
- selenium - SpreadJS 硒自动化问题
- python-3.x - 从脚本在 XFCE 中打开终端并激活 python virtualenv
- c# - Implementing open close principle when interfaces are different
- javascript - React Hooks : UseRef not recognizing Event from Material UI Select
- html - How to make a border around clip path shape?
- opencv - 图像配准和焦点堆叠
- angular - ngoninit 不适用于动态组件