[Tkinter-discuss] Force tkinter to use another fixed font

Sibylle Koczian nulla.epistola at web.de
Tue Jul 28 04:23:59 EDT 2020


Am 22.07.2020 um 18:36 schrieb Sibylle Koczian:
> Am 21.07.2020 um 18:30 schrieb Paul Malherbe:
>> Hi
>>
>> ttk.Entry and ttk.Label use TkDefaultFont therefore changing TkFixedFont
>> will not work.
>>
> Thank you for making me look at this - it's even worse: ttk.Label uses
> TkDefaultFont, ttk.Entry uses TkTextFont. So that's definitely not the
> right way.
>

No, I think now it _is_ a comparatively simple way:

import tkinter as tk
from tkinter import ttk
from tkinter import font


def changefonts():
     for fontname in [f for f in font.names()
                      if font.nametofont(f).actual()["family"] ==
                      "Inconsolata"]:
         font.nametofont(fontname).config(
             family="Bitstream Vera Sans Mono")

def main():
     root = tk.Tk()
     changefonts()
     ###... build your gui
     root.mainloop()

if __name__ == "__main__":
     main()

This should work for all themes. It seems unnecessary on Windows and on
Linux problems with the fonts probably depend on the chosen desktop
manager.

Regards
Sibylle


More information about the Tkinter-discuss mailing list