1

我无法在文本小部件中使用标准的格鲁吉亚语书写。而不是字母写问号。当没有 tkinter 时,即编写代码时,格鲁吉亚字体识别没有问题。另外,如果我复制用格鲁吉亚语写的单词并插入到文本小部件中,它会正确显示。

这是在屏幕上显示文本框的基本代码,我想在其中用格鲁吉亚语写一个单词。

import tkinter


root = tkinter.Tk()

txt = tkinter.Text(root)
txt.pack()

root.mainloop()

第一张图片显示了选择格鲁吉亚语时单词的显示方式。

第二个镜头,当我用格鲁吉亚语编写代码时,并提前定义了文本字段的值。在这种情况下,字段中的文本会正常显示。

4

2 回答 2

0

到目前为止,我能确定的最佳答案是 tk 不喜欢格鲁吉亚语和键盘输入,至少在 Windows 上不喜欢。

字符“翻译”通常称为“音译”。

Tk 文本使用 Unicode 的基本多语言平面(BMP,前 2**16 个代码点)。这包括格鲁吉亚字母表。第二张图片显示,一旦字符出现在小部件中,系统上的默认 Text 小部件字体就可以很好地显示格鲁吉亚字符。因此,新的显示字体似乎不能解决您的问题。('ქართული ენა' 在 Firefox 上可见,因为 FF 是基于 unicode 的,并且可以显示大部分(如果不是全部)BMP。)

看起来问题是在不通过您的编辑器的情况下获取正确的 tk 代码。您使用的是什么操作系统和编辑器。您是如何输入类似于以下的混合字母行的

txt.insert('1.0', 'ქართული ენა')  # ?  (I cannot copy the image string.)

你是如何运行 Python 代码的?如果你从第一张图片中剪下问号并插入

for c in '<insert here>': print(ord(c))

你看到了什么?

您的操作系统需要一个“格鲁吉亚键盘输入”或“输入法”程序(谷歌显示了几个),它可以让您在向任何读取键盘的程序发送 ascii 和 Geargian 代码之间来回切换。

Windows 现在附带此功能,并根据具体情况激活语言。我已经输入了西班牙语,有了它,我可以在此处输入 á 和 ñ 并进入 IDLE 和一个新的文本框。但是,当我添加格鲁吉亚语时,我可以在此处输入(随机 ;-) ჰჯჰფგეუგსკფ(在 FireFox 中,还有 MS Edge 中),但只能得到 ?????? 在 tk 文本框中。这些是实际的 ascii 问号 ord('?') = 63,而不是替代无法表示的代码。日语也适用于基于 tk-Text 的 IDLE。因此,格鲁吉亚语的问题并不适用于所有非拉丁字母。

于 2016-09-19T00:13:17.297 回答
0

好的,这就是我实现它的方法:
首先,确保您的计算机中安装了格鲁吉亚字体;如果没有,那就去下载一个(我从这里下载了我的);
现在,转到您的 tkinter 程序,并将您的字体添加到您的Text小部件:

txt = tkinter.Text(root, font=("AcadNusx", 16))

注 1:我支持格鲁吉亚语的字体名称是 AcadNusx,但您的可以不同;
注意2:如果你还没有导入Font,那么在你程序的开头导入它;
注意 3:不要将计算机的字体更改为格鲁吉亚语,因为您已经在程序内部更改了它,因此请确保将其设置为英语。

于 2016-09-17T15:20:30.923 回答