4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

tkinterのウィンドウを閉じても処理が終わらないときの対処法

Posted at

はじめに

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()

ウィンドウを閉じると処理が完了するようになりました。

参考

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?