[Tkinter-discuss] System Font Size

Jeff Epler jepler at unpythonic.net
Tue Jul 11 16:54:20 CEST 2006


If you want to find the default font used for a particular item, create
one and interrogate it:
    >>> b = Tkinter.Button(app)
    >>> b.cget("font")
    '-monotype-arial-medium-r-normal-*-12-*-*-*-p-*-iso8859-15'
(in this case, it's a Linux system with the fonts coming from the X
resource database in XLFD format)

You can find out details of the font using the tkFont module:
    >>> import tkFont
    >>> f = tkFont.Font(b, b.cget("font"))
    >>> fo.metrics()
    {'fixed': 0, 'ascent': 11, 'descent': 3, 'linespace': 14}
    >>> fo.configure()
    {'family': 'arial', 'weight': 'normal', 'overstrike': '0', 'size': '9',
    'slant': 'roman', 'underline': '0'}
    >>> fo.measure("Hello World")
    64

You can construct a new font similar to an existing one:
    >>> fc = fo.configure()
    >>> fc.weight = 'bold'
    >>> nf = tkFont.Font(b, **fc)
    >>> b.configure(font=nf, text="Bold Button")
    >>> b.pack()

You can also find the available "font families":
    >>> tkFont.families(b)
    ('nimbus roman no9 l', 'arial black', 'clearlyu devangari extra', ...
I'm not sure what use this is:
    >>> tkFont.names(b)
    ('font136858972', 'font136997436')

Jeff


More information about the Tkinter-discuss mailing list