文本小组件不显示Unicode字符

时间:2017-08-03 08:10:50

标签: python unicode tkinter

我正在使用区域语言文本编辑器,它从文本小部件中获取区域Unicode字符(我使用的脚本是Gurmukhi,Unicode兼容字体是Raavi)并将其打印在终端屏幕上。

现在当我将一些字符串复制并粘贴到文本小部件中时会出现问题,它会转换为图像中所示的框,但它会在终端窗口上打印出完美的字符串。

虽然我已尝试encoding的{​​{1}}和decoding功能,但是,这也是徒劳的。

我在Tkinter中找不到与文本小部件的Unicode输入机制相关的任何答案。

我们如何在文本小部件中显示完美的unicode字符串?

这是我的代码:

codecs

这是输入和输出:

Input and Output

1 个答案:

答案 0 :(得分:1)

  

我们如何在文本小部件中显示完美的unicode字符串?

假设您安装了正确的字体,您的代码应该可以正常工作。我已将您的代码缩减为更简单的示例:

import tkinter.font as tkFont
from tkinter import *

root = Tk()
customFont = tkFont.Font(family='Raavi', size=17)
content_text = Text(root, font=customFont, width=20, height=4)
content_text.pack(expand='yes', fill='both')
content_text.insert("end", 'ਸਤਵਿੰਦਰ')

root.mainloop()

在我的系统上,会产生以下结果:

screenshot of tkinter window

当我打印customFont.actual()的结果时,我得到以下内容(我没有安装" Ravii"字体,因此tkinter将替换后备字体,这可能是不同的你的系统):

{
    'slant': 'roman', 
    'underline': 0, 
    'size': 17, 
    'family': 'DejaVu Sans', 
    'overstrike': 0, 
    'weight': 'normal'
}

要查看您的tkinter安装将识别的所有字体系列的列表,请运行以下代码:

from tkinter import font, Tk

root = Tk()
print(font.families())