【问题标题】:Bengali font is broken on Idle and Tkinter app孟加拉语字体在 Idle 和 Tkinter 应用程序上损坏
【发布时间】:2018-02-20 04:12:11
【问题描述】:

我想在 Tkinter 标签或消息小部件中显示孟加拉语文本,但它的显示框类似于东西而不是文本。
我已经尝试在系统中安装不同的字体并将它们应用于代码,但没有任何效果。我应该怎么做才能以孟加拉语字体显示文本。
系统详细信息 - Ubuntu 16.04、Python 3.5

from tkinter import *
from tkinter import ttk

root = Tk()
msg=Message(root,text='আনন্দবাজার')
msg.config(font=('Lohit Bengali', 54))
msg.pack()
root.mainloop()

App Screenshot with output

【问题讨论】:

  • 您确定您的机器上安装了一个名为“Lohit Bengali”的字体系列吗?
  • 是的,我已经安装了“Lohit Bengali”。

标签: python ubuntu tkinter fonts


【解决方案1】:

您首先需要确定 tcl/tk 是否知道并可以访问“Lohit Bengali”。运行 IDLE 并单击 Options => Configure IDLE 并查看字体列表。 或者运行

import tkinter as tk
root = tk.Tk()
from tkinter import font
fams = font.families()
print('Lohit Bengali' in fams)  # answer question above
print()
for fam in sorted(fams):  # To see what tcl does know about
    print(fam)

编辑:为家庭电话添加括号

【讨论】:

  • 我没有安装孟加拉字体,但是当我将“পাইথন”粘贴到 IDLE 的 Shell 中时,在 Windows 上使用 Lucida Console 时,它​​可以正常显示,与在 FireFox 中的相同。 Windows 或 Windows 上的 tcl/tk 在填充字符方面显然比 Ubuntu 好得多。也许您拥有的一种系统字体会这样做。您可以使用 IDLE 轻松地试验多种字体。或者您可以调整答案中的程序以打印 'পাইথন' 并识别每种字体。
  • print('Lohit Bengali' in fams) # 回答上面的问题 TypeError: 'function' 类型的参数不可迭代。在我运行程序时显示此错误。通过配置 Idle 并将字体更改为“Lohit Bengali”,它显示孟加拉语但不正确,它仍然损坏,可读性不强,但比以前更好。
  • 发布的代码在families 之后缺少()。现在修好了。你可以再试一次。
  • 'Lohit Bengali' 字体在列表中,结果显示为 'True'。但是,即使我尝试了“NotoSansBengali”,孟加拉语仍然无法正常工作。
猜你喜欢
  • 2012-05-09
  • 1970-01-01
  • 1970-01-01
  • 2021-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-06
相关资源
最近更新 更多