问题描述
在 macOS 10.15.2下使用 tkinter 库 Entry 输入框,无法输入中文,不管怎么样都只能输入英文,只能复制进去中文,交互体验很不好ಥ_ಥ。
我的版本是 macOS 10.15.2,python 3.7.5。
原因
可以在 python 的网站找到一篇这样的说明:
https://www.python.org/download/mac/tcltk/
大意是如果在 macOS 用从 Python 官网下载的 python 3.8+,3.7.2+,3.6.8 或 2.7.16+,那么无需考虑这个问题就可以使用 IDLE 或 tkinter,将使用安装包内置的 Tcl/Tk8.6,不会使用系统自带的版本。
然而我是 python 3.6.0,在 macOS 10.6 或更高版本上,需要使用 Apple 提供的 Tcl/Tk8.5,但是他们有严重的错误。所以就会出现 tkinter 输入框 Entry 怎么切换输入法都没法输入中文的情况。需要链接到较新版本的 Tcl/Tk。
解决办法
如果需要用 IDLE 或 tkinter,首先不能用 macOS 自带的 python,要自己下个版本合适的 python。
由于官网下载非常慢,可以本站下载一份拷贝 python-3.8.1-macosx10.9.pkg。 使用 Python 内置的 tkinter 即可解决问题。
但是这个解决完输入问题之后,Toplevel
又不能正常弹出了!
我在使用macos 10.15.4
官网下载的python 3.8.3
ttk.Entry不能输入中文,TopLevel倒是可以正常弹出
现在也不知道咋搞。。。