我是Python的新手,如果有可能在以下情况下立即实现中止。
条件:2个按钮:Start
和Abort
当我按下Start
按钮时,代码应开始执行功能,如果我按下Abort
按钮,则该功能将立即停止运行,并变为初始状态(按下Start
按钮之前。)
此外,我知道“ signal.CTRL_C_EVENT / CTRL_BREAK_EVENT”,但是它将关闭所有代码,包括Tkinter mainloop
。
答案 0 :(得分:0)
这取决于您要完成的工作。
这里是在类中使用循环方法的示例。如果您有某种功能可以循环运行,则此方法有效。您只需将运行检查放到最能打破循环的位置。
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是一个单线程事件驱动程序,并且本身不能多线程。因此,我们需要管理需要通过线程中止的事情。这稍微复杂一点,也许需要视情况而定,所以我需要更多地了解您要尝试执行的操作。