2

好的,所以说我有一个 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

这可能吗?我已经在我的应用程序中尝试过,但它似乎不起作用。有一个更好的方法吗?有任何想法吗?

4

1 回答 1

2

不会跨线程抛出异常。除非您最终#do stuff here实际调用该quit_me()函数,否则您的主线程将永远不会看到抛出的异常。

您可以使用全局执行此操作:

QuitNow = False

def quit_me():
    QuitNow = True

def main():
    while not QuitNow:
        #do stuff here
于 2012-07-13T23:57:16.010 回答