On 1/21/2020 7:03 AM, R.Wieser wrote:
Hello all,

I've got a small tkinter based program showing (among others) a treeview.
I would like to set the default font for the whole window to something
larger, as its supposed to be displayed on a TV a few meters away from the
user.

A physically large display should have physically larger pixels, but see below.

A few problems:

1) I have not been able to find any info on how to set the default font for
the main window (so its caption as well as (I assume, automatically) all its
placed widgets would than use the new font size)

AFAIK, Toplevel windows do not have a font setting. Tk uses one of its default fonts for the window title and menu bar, which I believe are set from the system font settings. So the system settings would need to be changed to get relatively larger window text. Not easy, even if possible, from within a python program.

2) Although I've been able to find how to change the font size for both the
heading and the items within the treeview, only the heading resizes
vertically while the items do not (causing the font to be cut-of
vertically).

The tkinter treeview doc is deficient here. See Styling Options near the end of
https://www.tcl.tk/man/tcl8.6/TkCmd/ttk_treeview.htm

The widget font is set with the Treeview font style.
The heading font is set with the Heading font style.
Item fonts are set with item tag with font settings.
Row height is set with the Treeview rowheight style.
Equal height for all rows is a restriction.

"The -rowheight value is not corrected by the tk scaling value or by the configured font size and must always be set. ..." I believe the tcl expression given translates to "font.metrics('linespace')+2". Of course, use the linespace for the tallest font.

Searching "python tkinter treeview height" returns Q&As on Stackoverflow and other forums.

Also, the horizontal size of both the the heading and items
seem to stay the same (do not adjust to the new font size).

Yes, column widths are set in pixels and are only auto-adjusted by window resizings and separator movements. If you allow dynamic font changes, you have to redo row height and column widths.

Used example code:
https://riptutorial.com/tkinter/example/31885/customize-a-treeview


--
Terry Jan Reedy

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to