[Tkinter-discuss] System Font Size

Metz, Bobby W, WWCS bwmetz at att.com
Tue Jul 11 18:24:02 CEST 2006

Tk font sizes are independent of Windows so looking for a win32com means
of querying the system font sizes may be required.  As to your combobox
question, I don't use pmw but the combobox should be fairly simple to
create.  To refresh my mem on it I looked up examples of the two types,
simple & dropdown.  The simple version would be pretty easy to do with a
label and listbox.  The dropdown version would be harder, but if you
don't care about the arrow icon and don't need to select multiple items
in the combobox dropdown, then an OptionMenu would be the way to go.
Another thing to consider is tying a ListBox to a Button or MenuButton.
I've never tried this but I believe I've seen others on the web say it
can be done.


-----Original Message-----
From: tkinter-discuss-bounces at python.org
[mailto:tkinter-discuss-bounces at python.org]On Behalf Of Fuzzyman
Sent: Tuesday, July 11, 2006 8:04 AM
To: Jeff Epler
Cc: tkinter-discuss at python.org
Subject: Re: [Tkinter-discuss] System Font Size

Jeff Epler wrote:

>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'
Wow, on windows I get :

    '{MS Sans Serif} 8'

That's pretty different. :-)

If I then change my system font size to "extra large" and repeat the
exercise, the default font size is unchanged. The text on the title bar
is made bigger, but buttons created have the same smaller size text.

Looks like I'll have to find a win32 way to check the system settings.

Thanks anyway Jeff.

All the best,


>(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':
>    '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')

Tkinter-discuss mailing list
Tkinter-discuss at python.org

More information about the Tkinter-discuss mailing list