繁体   English   中英

tkinter - 如何设置Text的字体?

[英]tkinter - How to set font for Text?

我试图找到在tk.Text显示utf-8字符的最佳字体。

我让python使用这段代码打印tk已知的所有姓氏:

print(font.families(root=self.parent))

以及使用此代码的所有已知名称:

print(font.names(root=self.parent))

然而,族的输出是一个字体列表,其名称由一个或多个单词组成。 用这样的单词设置一个很容易:

text = tk.Text(master=self.frame)
text.configure(font='helvetica 12')

但是当我尝试使用由多个单词组成的字体名称时,我收到一个错误:

_tkinter.TclError: expected integer but got <second word of the family name>

我不能设计它,因为它是一个tk而不是一个ttk小部件,所以很遗憾我做不到:

style.configure('My.TText', fontsize=12, font='<family name with multiple words>')

我还试图简单地删除姓氏的空格,如下所示:

text.configure(font='fangsongti')

但这会导致tkinter使用一些后备字体。 我检查了它的名字,如:

text.configure(font='fangsongtisdngfjsbrgkrkjgbkl')
print(text.cget('font'))

这导致打印出我作为姓氏输入的确切字符串。 因此它只接受所有内容,除了多个措辞名称。

我找到了一些看起来不错的字体,但只有一定的尺寸,我不确定它们是否适用于大多数系统:

# helvetica 12
# gothic 13
# mincho 13

如何设置名称由多个单词组成的字体? 如果我不能,具有一个措辞名称的字体适合显示utf-8字符,例如普通字体大小的中文(但不是唯一!)字符, 并且在大多数系统上都可用?

以这种方式指定字体时,请使用元组:

text.configure(font=("Times New Roman", 12, "bold"))

更好的是,您可以创建自己的自定义字体对象并按名称指定属性。 注意:在创建字体对象之前,必须先创建根窗口。

# python 2
# import Tkinter as tk
# from tkFont import Font

# python 3
import tkinter as tk
from tkinter.font import Font

root = tk.Tk()
text = tk.Text(root)
...
myFont = Font(family="Times New Roman", size=12)
text.configure(font=myFont)

创建自己的字体的好处是,您可以稍后更改字体的任何属性,并且将自动更新使用该字体的每个窗口小部件。

myFont.configure(size=14)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM