📑

PySimpleGUIをmacOSで使うとGraph上の文字が表示されない問題の解決

2 min read

エラーの発端

Python で手早く GUI を作れるライブラリである PySimpleGUI では、さまざまなユースケースを想定したdemo ファイルが準備されている。

しかし、こと Graph を使用する demo ファイルにおいて、mac のローカル環境で使用してみても表示されるべき文字が一切表示されないという状況に苦しんだ。

コード自体はおかしくないものだから、DrawTextdraw_textにしたり、本質的でない試行を繰り返してしまった。

原因

まず、前提として PySimpleGUI は tkinter という標準モジュールのラッパーである。

macOS の Python で使用される tkinter のバージョンは 8.5 であるが、このバージョンは macOS との相性が悪く、PySimpleGUI に限らず随所で文字が表示されないトラブルを発生させている悪名高きバージョンなのである。

対策

tkinter のバージョンを 8.6 にアップデートする。
ただし、公式でサポートされている手法はない。

macOS で tkinter を 8.6 にアップデートする方法

gist にtkinter8.6 をパッケージした Python3.8.1のインストールファイルをアップロードしてくれている天才がいるので、その方法に従う。

手順

以下は、すでに homebrew でインストールしてある Python を tkinter8.6 対応の Python3.8.1 に置換するというのが前提である。

  • 既存 Python のアンインストール
brew uninstall python
  • brew のキャッシュ削除
brew cleanup
  • brew のアップデート
brew update
  • Python パッケージを brew 配下にダウンロード
FRMPTH="/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/python.rb"; rm $FRMPTH; curl -L -o $FRMPTH https://gist.github.com/iexa/2ac761bfd96ab78988b76c030d54a5b8/raw/python-with-tcl.rb
  • ダウンロードしたパッケージを使用してインストール
HOMEBREW_NO_AUTO_UPDATE=1 brew install --build-from-source python
  • インストール結果の確認(8.6 と出れば成功)
$ python3 -c "import tkinter;print(tkinter.TkVersion)"
8.6

あとは煮るなり焼くなり好きに PySimpleGUI を使うのがよろしい。

付記

個人ブログの方にも同様の記事を投稿しており、そちらには本題から逸れるが付随的に発生するエラーの情報も記載した。

Discussion

ログインするとコメントできます