注意:从Python 3.8开始,非 BMP 字符可以在 IDLE 中显示(因此,Tkinter 现在也可能显示它们,因为它们都使用 TCL),这是在我发布这个问题后一段时间发布的。我计划在试用 Python 3.9 之后(在安装更新版本的 Xubuntu 之后)进行编辑。我还阅读了在 IDLE 中编辑这些字符可能不像其他字符那么简单;请参阅此处的最后一条评论。
所以,今天我正在制作输入某些 Unicode 字符的快捷方式。一切进展顺利。然后,当我决定做这些字符时(在我的 Tkinter 程序中;他们甚至不会尝试进入 IDLE),并且,我遇到了一个奇怪的意外错误,我的程序开始删除我在文本框中写的所有内容. 这是不可接受的。
这是错误:
_tkinter.TclError: character U+1d12b is above the range (U+0000-U+FFFF) allowed by Tcl
我意识到我一直使用的大多数 Unicode 字符在代码中只有四个字符。出于某种原因,它不喜欢五个。
那么,有什么方法可以在 ScrolledText 小部件中打印这些字符(更不用说不会弄乱其他所有内容了)?
UTF-8 是我的编码。我使用的是 Python 3.4(所以 UTF-8 是默认的)。
我可以用 print 语句很好地打印这些字符。
输入字符而不只是使用 ScrolledText.insert (例如Ctrl-shift-u
,或通过在代码中执行此操作:)b'\xf0\x9d\x84\xab'
确实输入了它,没有那个错误,但它仍然开始疯狂删除东西,或添加额外的空格(包括它自己,虽然它随机重新出现有时)。