How to change font and size of buttons and frame in tkinter using python? How to change font and size of buttons and frame in tkinter using python? tkinter tkinter

How to change font and size of buttons and frame in tkinter using python?


UPDATE: The New Mexico Tech tkinter website has been archived on GitHub.

First the best reference for Tkinter is this New Mexico Tech website. In the toc you will find a section on fonts, and in the section on Button widgets you'll find the option font.

you must have a Tkinter object to create a font

Python-2

Support for Python-2 has officially ended as of Jan 1, 2020

from Tkinter import *  # Note: UPPER case "T" in Tkinterimport tkFontroot = Tk()

Python-3

Python-3 Tk wrappers differ from Python-2

from tkinter import *  # Note: lower case "t" in tkinterfrom tkinter import font as tkFont  # for convenienceroot = Tk()

create a font like the example from New Mexico Tech website

helv36 = tkFont.Font(family='Helvetica', size=36, weight='bold')# you don't have to use Helvetica or bold, this is just an example

(Note: recall for Python-3 font was imported as tkFont for convenience)

now you can set the font for button created from Button in the original post

button['font'] = helv36

The size of the button will depend on your geometry manager, EG: grid or pack. Only the grid method is covered in the layouts section by New Mexico Tech site, but effbot.org is also a great reference and he covers pack pretty well.

try:  # Python-2    from Tkinter import *    import tkFontexcept ImportError:  # Python-3    from tkinter import *    from tkinter import font as tkFont# using grid# +------+-------------+# | btn1 |    btn2     |# +------+------+------+# | btn3 | btn3 | btn4 |# +-------------+------+root = Tk()# tkFont.BOLD == 'bold'helv36 = tkFont.Font(family='Helvetica', size=36, weight=tkFont.BOLD)btn1 = Button(text='btn1', font=helv36)btn2 = Button(text='btn2', font=helv36)btn3 = Button(text='btn3', font=helv36)btn4 = Button(text='btn4', font=helv36)btn5 = Button(text='btn5', font=helv36)root.rowconfigure((0,1), weight=1)  # make buttons stretch whenroot.columnconfigure((0,2), weight=1)  # when window is resizedbtn1.grid(row=0, column=0, columnspan=1, sticky='EWNS')btn2.grid(row=0, column=1, columnspan=2, sticky='EWNS')btn3.grid(row=1, column=0, columnspan=1, sticky='EWNS')btn4.grid(row=1, column=1, columnspan=1, sticky='EWNS')btn5.grid(row=1, column=2, columnspan=1, sticky='EWNS')

Tkinter Button fonts

Also try ttk.


tkdocs tutorial recommends using named fonts and styles if you want to tweak the appearences:

import randomtry:    import tkinter as Tk    import tkinter.ttk as ttk    import tkinter.font as fontexcept ImportError: # Python 2    import Tkinter as Tk    import ttk    import tkFont as fontdef change_font_family(query, named_font):    named_font.configure(family=random.choice(font.families()))root = parent = Tk.Tk()root.title("Change font demo")# standard named font (everything that uses it will change)font.nametofont('TkDefaultFont').configure(size=5) # tiny# you can use your own fontMyFont = font.Font(weight='bold')query = Tk.StringVar()ttk.Entry(parent, textvariable=query, font=MyFont).grid() # set font directlyttk.Button(parent, text='Change Font Family',  style='TButton', # or use style           command=lambda: change_font_family(query, MyFont)).grid()query.set("The quick brown fox...")# change font that widgets with 'TButton' style useroot.after(3000, lambda: ttk.Style().configure('TButton', font=MyFont))# change font size for everything that uses MyFontroot.after(5000, lambda: MyFont.configure(size=48)) # in 5 secondsroot.mainloop()


use the command font = font.Font(size = 20) to change the looking of text in button

import tkinter.font as fntimport tkinter as tkr=tk.Tk()tk.Button(r,text = "Test", font = fnt.Font(size = 20))r.mainloop()