python - 使用异常跳出 while 循环

标签 python events exception

好吧,假设我有一个 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/

相关文章:

javascript - 在 Javascript 中分配文本框的值并使用 C# 在 session 中设置该值

c# - 在事件中只打开一个表格

C++ 捕获所有异常

python - 如何向 while 循环添加 ValueError 异常?

java - 是什么导致了 java.lang.ArrayIndexOutOfBoundsException 以及如何防止它?

Python Selenium previous::查找元素错误

Python-解析大文本文件并将数据插入数据库

javascript - 如何仅在事件失去绑定(bind)之前才绑定(bind)事件

python - 在同一数据库上同时使用 SQLAlchemy 和 Django ORM

python - 如何创建索引来解析大文本文件