先日、macOS を 12(Monterey)にバージョンアップし、外観モードをダークに設定しました。
その後、PythonでGUIライブラリ tkinterを使ってみたところ、ラベルやボタンが正常に表示されなくなる現象が発生しました。 次の画面は、tkinterで、ラベルとボタンを貼り付けた画面ですが、ラベルはテキストが表示されず、ボタンは背景と文字色がほぼ同色で、しかもチラチラとチラつきが生じていました。
調べてみたところ
- tkinterはTcl/Tkのラッパーであり、Tclのバージョン 8.6でmacOSのダークモードに対応した
- macOS 12では、pythonが標準ではインストールされ無くなっており、オプションでコマンドライン開発者ツールをインストールすることでpython 3.8がインストールされる
- このpython 3.8でインストールされるtkinterは、Tcl 8.5であり、macOSのダークモードに対応できない
ということでした。
解決策
HomeBrewでpython(3.10)とpython-tk(3.10)をインストールすると、macOSダークモード対応のTclが含まれるので今回の問題の解決となります。