torutkのブログ

ソフトウェア・エンジニアのブログ

Python tkinter GUIとmacOS 12 ダークモード

先日、macOS を 12(Monterey)にバージョンアップし、外観モードをダークに設定しました。

その後、PythonGUIライブラリ tkinterを使ってみたところ、ラベルやボタンが正常に表示されなくなる現象が発生しました。 次の画面は、tkinterで、ラベルとボタンを貼り付けた画面ですが、ラベルはテキストが表示されず、ボタンは背景と文字色がほぼ同色で、しかもチラチラとチラつきが生じていました。

調べてみたところ

  • tkinterはTcl/Tkのラッパーであり、Tclのバージョン 8.6でmacOSのダークモードに対応した
  • macOS 12では、pythonが標準ではインストールされ無くなっており、オプションでコマンドライン開発者ツールをインストールすることでpython 3.8がインストールされる
  • このpython 3.8でインストールされるtkinterは、Tcl 8.5であり、macOSのダークモードに対応できない

ということでした。

解決策

  • HomeBrewで、pythonpython-tkをインストールし、これを使用する

HomeBrewでpython(3.10)とpython-tk(3.10)をインストールすると、macOSダークモード対応のTclが含まれるので今回の問題の解決となります。