Source code for custom_step.fontchooser
import tkinter as tk
import tkinter.ttk as ttk
from tkinter.font import families
[docs]
class FontChooser(tk.Toplevel):
def __init__(self, master, **kwargs):
super().__init__(**kwargs)
self.master = master
self.transient(self.master)
self.geometry("500x250")
self.title("Choose font and size")
self.configure(bg=self.master.background)
self.font_list = tk.Listbox(self, exportselection=False)
self.available_fonts = sorted(families())
for family in self.available_fonts:
self.font_list.insert(tk.END, family)
current_selection_index = self.available_fonts.index(self.master.font_family)
if current_selection_index:
self.font_list.select_set(current_selection_index)
self.font_list.see(current_selection_index)
self.size_input = tk.Spinbox(self, from_=0, to=99, value=self.master.font_size)
self.save_button = ttk.Button(
self, text="Save", style="editor.TButton", command=self.save
)
self.save_button.pack(side=tk.BOTTOM, fill=tk.X, expand=1, padx=40)
self.font_list.pack(side=tk.LEFT, fill=tk.Y, expand=1)
self.size_input.pack(side=tk.BOTTOM, fill=tk.X, expand=1)
[docs]
def save(self):
font_family = self.font_list.get(self.font_list.curselection()[0])
# yaml_file_contents = f"family: {font_family}\n" \
# + f"size: {self.size_input.get()}"
yaml_file_contents = "family: {}\n".format(font_family) + "size: {}".format(
self.size_input.get()
)
with open(self.master.font_scheme_path, "w") as file:
file.write(yaml_file_contents)
self.master.update_font()