2

わかりましたので、Tkinter ウィンドウと while ループが進行中であるとします。Tkinter ウィンドウは別のスレッドで実行されており、while ループはメインにあります。元:

  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 に答える