PySimpleGUIでグラフを閉じた時に起きるバグ
自作家計簿アプリをPythonで作った際に起こったバグについて共有します。
まずはどのようなバグなのかを見てもらいましょう。
少し小さくなってしまったので見づらいですが、matplotlibで作成したグラフを閉じた瞬間にアプリが急に終了しています。
次になぜこのようなバグが起きたのか考えます。
結論:matplotlibで作成したグラフのウィンドウをPySimpleGUIのウィンドウに埋め込まなかったことが原因
上記のように結論づけます。
理由は以下の通りです。
1.matplotlibで作成したグラフのウィンドウがプログラムの本文に記載されていない
私のアプリの構造は以下のようになっています。
バグが起きるのは、赤色で表示された「支出の内訳グラフ」の画面を閉じた時に起きます。そしてこの画面はPySimpleGUIのWindowとして定義されていません。これによりバグが起こっているかもしれません。
エラーの種類がSegmentation Faultである
zsh: segmentation fault
エラーでできたのはこれ。
今まで見たことがないものなので調べました。
ChatGPTによると、
問題の原因はわかりませんでしたが、どうやらPythonのスクリプト上での問題ではないようです。
一応ここにグラフを生成する関数と、イベントのループ部分を載せておきます。
問題の部分
1.グラフの作成
2.ループの中での部分
プログラムのメインとなる部分
環境による問題か?
Python, PySimpleGUI, matplotlibの3つ全てが最新のバージョンなので、これは問題ではないでしょう(2024年5月)。
私は基本windowsを利用していますが、今回のアプリ作成はmacを使用していました。よってwindowsでも試してみました。
結果:windowsでは問題なくグラフを閉じることができた
つまりmacのosによるバグではないかと言えます。
考察
segmentation faultのエラーは、直接Pythonが引き起こしたものではなく、c言語を使っているmatplotlibにあるかもしれません。
また作成したぐらふをPySimpleGUIのウィンドウに埋め込むのではなく、直接matplotlibの機能でグラフを表示していることに危険性があります。
しかしwindowsでは問題なく動いたのを見ると、osによる問題もあるのではないでしょうか。
macでプログラムを作成するときは、上記のバグが発生しないように気を付けます。
この記事が気に入ったらサポートをしてみませんか?