如何使用Python创建一个字体选择器应用程序

364 阅读5分钟

如何使用Python创建一个字体选择器应用程序

字体选择器是一个简单的应用程序,它允许你浏览安装在你的计算机上的所有字体,过滤你的选项,为你的项目找到一个理想的字体。

在本教程中,我们将使用Tkinter Python库来构建一个字体选择器应用程序。

目录

  • 前提条件
  • 什么是Tkinter?
  • 创建一个字体选择器应用程序
  • 结论
  • 参考资料

前提条件

要继续学习本教程,你需要具备以下条件。

  • 在你的计算机系统上安装[Python3]。
  • 一个代码编辑器。我使用[Pycharm]。

什么是Tkinter?

Tkinter是Python的标准GUI库。当Python和Tkinter集成在一起时,创建图形用户界面变得更加快速和容易。

Tkinter 提供了几何部件的配置,它将部件组织在父窗口中,以实现图形用户界面。

Tkinter是在python中创建图形用户界面和应用程序的一个神奇的工具。我们将用它来建立字体选择器的应用程序。

你可以使用pip 命令来安装Tkinter。

pip install tk

关于字体的一点背景

字体是一个数字数据文件,它包含了与图形相关的字形的集合。字体制作程序是用来设计和创建计算机字体的。

字体也被称为字体,它们有各种各样的重量、形状、大小、颜色、设计和宽度。

据估计,全世界有超过50万种字体在使用。一个字体选择程序将帮助计算机用户过滤掉安装在计算机系统中的全部字体,并选择他们想要使用的字体。

为了给网页或文件增加风格,可以使用不同的字体。也就是说,根据内容的不同,它们可以用来设置或匹配文本的 "色调"。此外,根据媒介的不同,某些字体会对可读性产生影响。

计算机字体文件数据格式分为三类。

1.位图字体

每个面的字形、重量、宽度和大小都由一个点的矩阵来表示。

bitmap font image

2.矢量字体

它也被称为轮廓字体。在这里,每个字形都是通过绘图规范和数学方法来描述的,允许将字符轮廓缩放到任何尺寸。

vector font image

3.描边字体

特定字体中线条的大小和形状是通过一系列指定的线条和附加数据来定义的,它们共同决定了字形的外观。

stroke font image

创建字体选择器应用程序

在我们的代码编辑器中,我们将建立一个名为font.py 的新文件,在这里我们将编写我们的代码。

让我们先从Tkinter库中导入Tkinter以及字体。

from tkinter import *
from tkinter import font

root = Tk()

root.title('maji.com - Font Chooser App')
root.iconbitmap('c:/gui/maji.ico')
root.geometry("500x400")

首先,我们创建一个根部件。这是一个带有标题栏的窗口。创建完根部件后,程序员就可以创建其他的部件了。

然后我们给我们的字体应用程序起一个名字(我用的是maji.com 。如果你想自定义应用程序,你可以用你自己的名字)。

然后我们设置应用程序的大小。

def font_chooser(a):
    user_font.config(
        family=user_listbox.get(user_listbox.curselection()))

然后我们编写font_chooser ,其中包括定义字体函数和配置Listbox ,以检索系统的当前字体选择。

user_font = font.Font(family="Helvetica", size="30")

my_frame = Frame(root, width=490, height=285)
my_frame.pack(pady=10)
my_frame.grid_propagate(False)
my_frame.columnconfigure(0, weight=10)

然后,我们通过将font_variable ,指定我们的字体为Helvetica字体,字体大小为30。然后通过定义my_frame 变量来创建一个框架,该变量指定了宽度和高度。

.grid 函数也被用来冻结框架,防止每次从字体选择器应用程序中挑选新的字体时,Listbox 的尺寸发生不必要的变化。

user_text = Text(my_frame, font=user_font)
user_text.grid(row=1, column=1)
user_text.grid_rowconfigure(0, weight=1)
user_text.grid_columnconfigure(0, weight=1)

user_listbox = Listbox(root, selectmode=SINGLE, width=90)
user_listbox.pack()

通过定义user_text 变量,我们可以添加文本框。我们通过将定义的变量放在一个框架中,并利用我们的字体使字体的大小变得动态。

我们利用.grid 函数来防止字体应用程序异常地调整大小。我们将行和列的权重设置为1,以确保行和列的额外空间被均匀分配。

我们通过将user_listbox 变量设置为具有单模式选择的Listbox 来创建一个Listbox ,这允许我们一次只选择一种字体,同时仍然指定宽度大小。

for f in font.families():
    user_listbox.insert('end', f)

user_listbox.bind('<ButtonRelease-1>', font_chooser)
root.mainloop()

我们使用一个for 循环来迭代font.families 序列,将字体家族添加到已经形成的Listbox 。然后我们使用.bind 函数来绑定Listbox

mainloop() 我们将使用这个方法来运行字体选择器应用程序。它将允许应用程序连续和无限期地运行,直到用户决定通过关闭窗口或使用键盘上的Escape键来结束该程序。

而字体选择器的界面将看起来像这样。

fontapp image

总结

在本教程中,我们了解了不同类型的计算机字体格式以及如何制作一个字体选择器应用程序。来吧,在你的项目中试试吧。