Force TkAgg Matplotlib backend on macOS
authorJakob Cornell <jakob+gpg@jcornell.net>
Sun, 29 Dec 2024 21:15:47 +0000 (15:15 -0600)
committerJakob Cornell <jakob+gpg@jcornell.net>
Sun, 29 Dec 2024 21:15:47 +0000 (15:15 -0600)
This fixes a crash caused by closing a generated plot window in the app.

main.py

diff --git a/main.py b/main.py
index 5128bc60dee81dcb3b473439280dbb88fcf264a5..edf7f224b040608acd0c380434d6c99122c0e5ea 100644 (file)
--- a/main.py
+++ b/main.py
@@ -800,9 +800,10 @@ class AutoJsonStorageMgr:
                        json.dump(data, f)
 
 
-# This seems to be necessary for Pyinstaller builds; not sure why.
+# The "macosx" backend is chosen by default on macOS and doesn't seem to play well with Tk.
+# https://discuss.python.org/t/tkinter-pyplot-crashes-appkit-on-macos/75590
 if sys.platform == "darwin":
-       matplotlib.use("macosx")
+       matplotlib.use("TkAgg")
 
 model = MainModel(AutoJsonStorageMgr('data'), AutoJsonStorageMgr('state'))
 view = MainView()