This question has been answered fully, but it's useful for me to be able to see what every font looks like so that I'm sure of which one I would like to use. In the interest of saving someone else from reinventing the wheel, I'll post my code here. As above, each font family is shown in a scrolling window. The difference is that each font in this code is printed in the font itself.
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 i, item in enumerate(fonts):
label = "listlabel" + str(listnumber)
label = Label(frame,text=item,font=(item, 16))
label.grid(row=i)
label.bind("<Button-1>",lambda e,item=item:copy_to_clipboard(item))
listnumber += 1
def copy_to_clipboard(item):
root.clipboard_clear()
root.clipboard_append("font=('" + item.lstrip('@') + "', 12)")
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()
I hope this helps somebody.
Edit: Clicking on font name will copy it to clipboard ready for use in your tkinter script, per request from @idbrii .
Answer from jimmiesrustled on Stack OverflowThis question has been answered fully, but it's useful for me to be able to see what every font looks like so that I'm sure of which one I would like to use. In the interest of saving someone else from reinventing the wheel, I'll post my code here. As above, each font family is shown in a scrolling window. The difference is that each font in this code is printed in the font itself.
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 i, item in enumerate(fonts):
label = "listlabel" + str(listnumber)
label = Label(frame,text=item,font=(item, 16))
label.grid(row=i)
label.bind("<Button-1>",lambda e,item=item:copy_to_clipboard(item))
listnumber += 1
def copy_to_clipboard(item):
root.clipboard_clear()
root.clipboard_append("font=('" + item.lstrip('@') + "', 12)")
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()
I hope this helps somebody.
Edit: Clicking on font name will copy it to clipboard ready for use in your tkinter script, per request from @idbrii .
from tkinter import Tk, font
root = Tk()
font.families()
I have had a hard time looking for something that outlines all the fonts that Tkinter can use. so I decided to make my own list it's not big but it works so anyone who needs it here:
Arial
Times New Roman
Comic Sans MS
Courier New
Impact
Georgia
Lexend (make sure you specify if its bold, thin etc)
Comfortaa
if anyone has a link to a website that's better or has a better list put it in the comments please.