好吧,假设我有一个 Tkinter 窗口和一个 while 循环正在进行。 Tkinter 窗口在单独的线程中运行,而 while 循环在 main 中。例如:
def quit_me():
raise ValueError("Exception to quit while loop")
exit()
root = Tk()
start_new_thread(root.mainloop,())
root.protocol("WM_DELETE_WINDOW", quit_me)
def main():
while (true):
try:
pass #do stuff here
except ValueError:
break
这可能吗?我已经在我的应用程序中尝试过,但它似乎不起作用。有一个更好的方法吗?有什么想法吗?
最佳答案
不会跨线程抛出异常。除非您的#do stuff here
最终实际上调用了quit_me()
函数,否则您的主线程将永远不会看到抛出的异常。
您可以使用全局来做到这一点:
QuitNow = False
def quit_me():
QuitNow = True
def main():
while not QuitNow:
#do stuff here
关于python - 使用异常跳出 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11479769/