如何在 Tkinter 中列出可用的字体族?


Tkinter 的 **font** 属性是用于自定义小部件默认字体的最有价值的属性之一。我们已经见过很多字体并在我们的部件中使用了它们,但有时,猜测 Tkinter 库中哪些字体适用似乎很复杂。Python Tkinter 对选择字体更具体。我们可以创建一个应用程序,该应用程序可以列出 Tkinter 库中所有可用的字体。

要使用 **font** 库,我们必须使用以下方法在我们的环境中导入它:

from tkinter import font

创建此特定应用程序需要几个步骤:

  • 定义一个函数并使用 **font.families()** 构造函数创建字体的实例。

  • 迭代所有字体,并使用 Label Widget 显示它们,为文本值分配特定的字体。

  • 创建一个带有垂直滚动条的画布。

  • 在画布内创建一个框架,我们将在其中显示所有字体。

  • 将鼠标按钮绑定到滚动部件,以便在框架中启用滚动功能。

示例

#Import required library
from tkinter import *
from tkinter import font
#Create an instance of tkinter frame
win = Tk()
win.geometry("750x350")
win.title('Font List')
#Create a list of font using the font-family constructor
fonts=list(font.families())
fonts.sort()
def fill_frame(frame):
   for f in fonts:
      #Create a label to display the font
      label = Label(frame,text=f,font=(f, 14)).pack()
def onFrameConfigure(canvas):
   canvas.configure(scrollregion=canvas.bbox("all"))
#Create a canvas
canvas = Canvas(win,bd=1, background="white")
#Create a frame inside the canvas
frame = Frame(canvas, background="white")
#Add a scrollbar
scroll_y = Scrollbar(win, orient="vertical", command=canvas.yview)
canvas.configure(yscrollcommand=scroll_y.set)
scroll_y.pack(side="right", fill="y")
canvas.pack(side="left", expand=1, fill="both")
canvas.create_window((5,4), window=frame, anchor="n")
frame.bind("<Configure>", lambda e, canvas=canvas: onFrameConfigure(canvas))
fill_frame(frame)
win.mainloop()

输出

执行上述代码将显示一个窗口,其中包含 Tkinter 支持的可用的字体列表。

更新于: 2021年4月22日

3K+ 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告