はじめに
pulpを用いて最適化処理をした結果(前記事参照)をtkinterで表示させるプログラムを作成していました。
その際にtkinterのウィンドウを閉じるボタンを押下しても処理が止まらない現象が生じました。
対処法
- 以下記事の通りにしたところ解消しました。
- 内容は上記とほぼ同じですが、lambdaを用いた運用にすることで関数として呼び出すことが可能です。
- 備忘録も兼ねて記します。
サンプルコード
python(対処前)
import tkinter as tk
def show_graph(a,b):
root = tk.Tk()
root.title("Optimization Result Graph")
root.geometry("800x600")
------ここは結果をグラフ表示するコード部分のため割愛-------
root.mainloop()
- 関数quit_meを追記します。
quit_me(root_window)
def quit_me(root_window):
root_window.quit()
root_window.destroy()
- show_graph3行目へroot.protocol("WM_DELETE_WINDOW", lambda :quit_me(root))を追記します。
- root.protocol("WM_DELETE_WINDOW",quit_me(root))とするとエラーを吐くので、lambdaを使用します。
python(対処後)
import tkinter as tk
def quit_me(root_window):
root_window.quit()
root_window.destroy()
def show_graph(a,b):
root = tk.Tk()
root.protocol("WM_DELETE_WINDOW", lambda :quit_me(root))
root.title("Optimization Result Graph")
root.geometry("800x600")
------ここは結果をグラフ表示するコード部分のため割愛-------
root.mainloop()
ウィンドウを閉じると処理が完了するようになりました。