【Python】作ったアプリがMacで日本語入力できない場合の解決法を探した話【Tkinter】

Python

こんにちは、Rumadra(@rumadra)です。

 

先日MacでTkinterを使ったGUIアプリ、やっと形になったところですが一つ大きな問題があります。

 

 

テキスト欄が日本語入力できない!!なぜだ!!


コピペではっつけたりはできるけどそ☆れ☆は☆メンドクサイ

 

ということでなかなかクリティカルな状況なため、この不具合について調べて見ました。

 

今回は普段よりも不確定な内容のため、実行は自己責任でお願いします。

そもそも何が原因なのか?

調べたら発表がありました、どうやらPythonの標準ライブラリTclTkのバグが原因か。

以下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

 

よっしゃ、やったるかと思ったのですが、こんな記事がありました:

Is it possible to input Chinese text into tk Text and Entry widgets with tkinter? - Stack Overflow

 

どうやらpyenv環境下でのPythonではそもそもTkinter上で日本語入力ができないそうな。

 

ちくしょーーーーー!!

 

 

まあ、pyenvを使っていなくて純粋にPython Installerでインストールした人も見てるかと思うので紹介だけでもしましょう。(これぞ聖人君主

 

推奨パッケージのインストール

次の②パターンでできるそうです。

homebrewを使った方法

brew install python --with-tcl-tk

これでできない場合は、一度Pythonをアンインストールした状態やってみるといいかもしれません。

 

ActiveStateからインストールしてくる

Tkinterは元々Pythonではなく、ActiveStateという会社が提供しているので、こちらの

ダウンロードサイトからインストールします。

 

Download Python for the OS you need | ActiveState
Download Python 3.7, 3.6, 3.5 and 2.7 for Windows, Linux or macOS. ActivePython Community Edition is free to use in development.

 

ただし、こちらはActiveState Licenseの元配布されているので商用利用などを考えている方は一度ライセンス条項を確認した方がいいです。

 

さいごに

ということで、今回は調査レベルで留まった内容になってしまったので、結局直せませんでした

 

Windows環境もあるので、そのうちそっちの環境でも動かして見たいと思います。

 

まあ日本語は直接入力できないけどコピペで貼っつけられるので最悪このままでもいいですけどね。笑

 

今回の記事に限らずですが、参考程度にしていただけるといいかなと思います。

 

指摘、情報等ありましたら気軽にコメントください!

以上、Rumadraでした!

コメント

タイトルとURLをコピーしました