Skip to main content

Tkinter Font Selector

Project description

tkFontChooser

A simple font chooser for tkinter that allows the user to select the font family among the fonts available on his/her system. The size and style (bold, italic, underline, strike-through) of the text can be set too.

This module contains a FontSelector class which implements the font chooser and an ask_font function that displays the font chooser and returns the chosen font when the user closes the font chooser. The font is returned as a dictionary like the one returned by the function tkFont.Font.actual.

Requirements

  • Linux, Windows, Mac
  • Python 3 with tkinter

Installation

pip install tkFontSelector

Documentation

from tkfontselector import ask_font

ask_font(master=None, text="Abcd", title="Font Chooser", **font_args)

Open the font chooser and return a dictionary of the font properties. This dictionary is similar to the one returned by the actual method of a tkinter Font object.

# example dictionary
{'family': str,
    'size': int,
    'weight': 'bold'/'normal',
    'slant': 'italic'/'roman',
    'underline': bool,
    'overstrike': bool}

General arguments

master: Tk, Toplevel, or None (Optional)

text: str (Optional) text to show in the font selection window

title: str (Optional) changes the title of the window

fixed_only: (bool, None) (Optional), if set to True will display mono spaced fonts only, if set to False will only show regular fonts, if set to None will show everything

families_only: bool (Optional), if set to True will only show Font Families part of the UI

font_dict: dict (Optional) font dictionary like an actual Font object

**kwargs: (Optional) pass any other args that might be accepted

Font Arguments

family: str

size: int

slant: str (roman or italic)

weight: str (normal or bold)

underline: bool

overstrike: bool

Example

EXAMPLE_FONT_FAMILY = {
    "family": "Comic Sans MS",
    "size": 10,
    "weight": "normal",
    "slant": "roman",
    "underline": 0,
    "overstrike": 0,
}


if __name__ == "__main__":
    """Example Usage"""
    root = Tk()
    style = ttk.Style(root)
    if "win" == platform[:3]:
        style.theme_use("vista")
    elif "darwin" in platform:
        style.theme_use("clam")
    else:
        style.theme_use("clam")
    bg = style.lookup("TLabel", "background")
    root.configure(bg=bg)
    label = ttk.Label(root, text="Chosen font: ")
    label.pack(padx=10, pady=(10, 4))

    def callback():
        font = ask_font(root, title="Choose a font", font_args=EXAMPLE_FONT_FAMILY)
        if font:
            # spaces in the family name need to be escaped
            font["family"] = font["family"].replace(" ", "\ ")
            font_str = "%(family)s %(size)i %(weight)s %(slant)s" % font
            if font["underline"]:
                font_str += " underline"
            if font["overstrike"]:
                font_str += " overstrike"
            label.configure(
                font=font_str, text="Chosen font: " + font_str.replace("\ ", " ")
            )

    ttk.Button(root, text="Font Selector", command=callback).pack(padx=10, pady=(4, 10))
    root.mainloop()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tkfontselector-1.0.10.tar.gz (9.4 kB view hashes)

Uploaded Source

Built Distribution

tkfontselector-1.0.10-py3-none-any.whl (10.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page