pyplotグラフの閉じるボタンを無効化

pythonのmatplotlibグラフの閉じるボタンを無効化する方法をネット上で探したのですが、中々見つからなかったので備忘録を残しておきます。

グラフ表示はこちらのサイトを参考にしました(グラフ更新のたびに最前面に表示されない方法)

それとこちらのサイトからwindowを取得する方法を得ました


ソース

def on_closing_plt():
    return

def disable_close_graph():
    backend = plt.rcParams['backend']
    if backend in matplotlib.rcsetup.interactive_bk:
        figManager = matplotlib._pylab_helpers.Gcf.get_active()
        if figManager is not None:
            canvas = figManager.canvas
            win = canvas.manager.window                      # Tkinterウィンドウを取得
            win.protocol("WM_DELETE_WINDOW", on_closing_plt) # 閉じるボタンのコールバック関数を設定

最後の2行、canvasからTkinterのウィンドウを取得するのが肝ですね

これをグラフ表示後に呼び出せば、閉じるボタンを無効化することが出来ます

あとがき

趣味で思いつくまま作った温度制御プログラムですが、仕事で使うとなれば、様々なリスクを想定して潰しておかなければいけません

誤操作防止に閉じるボタンの無効化やダイアログ確認を追加したのですが、グラフの閉じるボタン無効化の方法が中々見つけられずに苦労しました。(3時間くらい探した)

温度が取得出来なかったときの警報、異常温度の警報、途中から再開する場合・・・と未知のリスクを想像するのはなかなか頭を使う作業です。


プログラム改良のほうも続けていて、保温処理に過去の平均出力を使うだけで良いことが分かり、精度がかなり上がりました。

実験が楽しみです。

温泉卵の工程

針の穴を通すような精度になりました

↓↓↓ちょっとグッドボタン押してみて(無効化されてませんよ!)

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です