python - 列出 `tkinter` 中的可用字体系列

标签 python tkinter

在许多可用的 tkinter 示例中,您可能会看到如下内容:

canvas.create_text(x, y, font=('Helvetica', 12), text='foo')

但是,这在您的计算机上运行时可能不起作用(结果将完全忽略字体参数)。显然,如果其中有任何不正确的值,font 参数将被忽略。

为了检查字体系列是否有效,我怎样才能列出我系统中所有可用的字体系列?

最佳答案

这个问题已经得到了完整的回答,但是能够看到每种字体的外观对我来说很有用,这样我就可以确定我想使用哪一种。为了避免其他人重新发明轮子,我将在此处发布我的代码。如上所述,每个字体系列都显示在一个滚动窗口中。不同之处在于,此代码中的每种字体都是在字体本身中打印的。

from tkinter import *
from tkinter import font

root = Tk()
root.title('Font Families')
fonts=list(font.families())
fonts.sort()

def populate(frame):
    '''Put in the fonts'''
    listnumber = 1
    for item in fonts:
        label = "listlabel" + str(listnumber)
        label = Label(frame,text=item,font=(item, 16)).pack()
        listnumber += 1

def onFrameConfigure(canvas):
    '''Reset the scroll region to encompass the inner frame'''
    canvas.configure(scrollregion=canvas.bbox("all"))

canvas = Canvas(root, borderwidth=0, background="#ffffff")
frame = Frame(canvas, background="#ffffff")
vsb = Scrollbar(root, orient="vertical", command=canvas.yview)
canvas.configure(yscrollcommand=vsb.set)

vsb.pack(side="right", fill="y")
canvas.pack(side="left", fill="both", expand=True)
canvas.create_window((4,4), window=frame, anchor="nw")

frame.bind("<Configure>", lambda event, canvas=canvas: onFrameConfigure(canvas))

populate(frame)

root.mainloop()

我希望这对某些人有帮助。

关于python - 列出 `tkinter` 中的可用字体系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39614027/

相关文章:

Python:从 txt 文件的目录中计算单词并将单词计数写入单独的 txt 文件

Python Docx 表格列宽

Python - 根据按下按钮的时间将值传递回 main()

python - 保持 tkinter Progressbar 运行直到创建文件

python - (Tkinter)试图在循环中更新进度条值但程序崩溃了吗?

python - 如何让 pandas TimedeltaIndex 充当分母?

Python写二进制文件,字节

python - 计算从 4 个 mysql 表中检索到的所有可能文本对的余弦相似度

python - 在 Tkinter 中单击后禁用按钮

Python tkinter 之后