Я думаю, у меня есть концептуальная проблема. Я хочу запустить процесс с root.after
и завершить программу GUI и процесс одновременно. В настоящее время процесс, запущенный с root.after
, продолжает выполняться после уничтожения GUI. Как мне нужно сделать это правильно?
MWE: перебрать список и спросить, нужно ли заменить 1 на 0. Программу можно правильно закрыть, нажав exit
после замены всех единиц. В противном случае процесс для 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()