我是Python的新手,如果可以像下面的情况一样立即实现中止。
条件:2个按钮:Start
&Abort
当我按下Start
按钮时,代码应该开始执行某个功能,如果我按下Abort
按钮,无论它执行了什么,该功能都会立即停止,并变为初始状态(在按下Start
按钮之前(。
此外,我知道"signal.TRL_C_EVENT/CTRL_BREAK_EVENT",但它会关闭包括Tkinter mainloop
在内的所有代码。
这取决于您想要完成的任务。
下面是一个在类中使用循环方法的示例。如果您有某种函数要在循环中运行,那么这是有效的。你只需要检查一下在最有效地打破循环的地方运行。
import tkinter as tk
class Example(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.running = False
tk.Button(self, text="Start", command=self.start).pack()
tk.Button(self, text="abort", command=self.abort).pack()
def start(self):
self.running = True
self.running_loop()
def abort(self):
self.running = False
def running_loop(self):
if self.running == True:
print("running")
self.after(100, self.running_loop)
else:
print("stopped")
app = Example()
app.mainloop()
如果你正在做一些更复杂的事情,比如需要运行一些复杂的查询,那么你可能需要使用多线程来实现这一点,以便将进程与Tkinter分离。原因是Tkinter是一个单线程事件驱动的程序,它本身不能是多线程的。因此,我们需要管理那些需要通过线程中止的事情。这有点复杂,可能需要根据具体情况,所以我需要了解更多关于你试图做什么的信息