こんにちは、Rumadra(@rumadra)です。
先日MacでTkinterを使ったGUIアプリ、やっと形になったところですが一つ大きな問題があります。
テキスト欄が日本語入力できない!!なぜだ!!
コピペではっつけたりはできるけどそ☆れ☆は☆メンドクサイ
ということでなかなかクリティカルな状況なため、この不具合について調べて見ました。
Contents
そもそも何が原因なのか?
調べたら発表がありました、どうやらPythonの標準ライブラリTclとTkのバグが原因か。
以下Pythonソフトウェア財団のHPからの抜粋です。
If you are using macOS 10.6 or later, the Apple-supplied Tcl/Tk 8.5 has serious bugs that can cause application crashes.
macOS 10.6以降のユーザが対象で、Mac版のPythonインストーラを利用している方が当てはまるそうです。
解決策として、Tcl/Tkパッケージの推奨バージョンのインストールが提示されています。
TkinterはもともとTcl/Tkインターフェースを実装しているライブラリなので、バージョンが一致すればこのバグに該当します。
Tkinterのバージョンを確認する
自分の環境が果たして該当するのかどうか確認してから試すことにします。
ターミナルで、次を実行して8.5であれば対象になります。
python -c "import tkinter;print(tkinter.TkVersion)"
実行結果: 8.5
よっしゃ、やったるかと思ったのですが、こんな記事がありました:

どうやらpyenv環境下でのPythonではそもそもTkinter上で日本語入力ができないそうな。
ちくしょーーーーー!!
まあ、pyenvを使っていなくて純粋にPython Installerでインストールした人も見てるかと思うので紹介だけでもしましょう。(これぞ聖人君主
推奨パッケージのインストール
次の②パターンでできるそうです。
homebrewを使った方法
brew install python --with-tcl-tk
これでできない場合は、一度Pythonをアンインストールした状態やってみるといいかもしれません。
ActiveStateからインストールしてくる
Tkinterは元々Pythonではなく、ActiveStateという会社が提供しているので、こちらの
ダウンロードサイトからインストールします。

ただし、こちらはActiveState Licenseの元配布されているので商用利用などを考えている方は一度ライセンス条項を確認した方がいいです。
さいごに
ということで、今回は調査レベルで留まった内容になってしまったので、結局直せませんでした。
Windows環境もあるので、そのうちそっちの環境でも動かして見たいと思います。
まあ日本語は直接入力できないけどコピペで貼っつけられるので最悪このままでもいいですけどね。笑
今回の記事に限らずですが、参考程度にしていただけるといいかなと思います。
指摘、情報等ありましたら気軽にコメントください!
以上、Rumadraでした!
コメント