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

This is the code I used to create a simple text field and button in tkinter.

What should be the parameters for a better view of the frame and buttons?

root = Tk.Tk() def submit(): query = entry.get() retrieve(query) entry = Tk.Entry(root) entry.pack() button = Tk.Button(root, text='submit', command=submit) button.pack() root.mainloop() 
+13
python tkinter tk
source share
2 answers

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

First, the best technology reference for Tkinter is this New Mexico technology website . In the current section you will find a section with fonts , and in the button widget section you will find a font option.

you must have a Tkinter object to create the font

 from Tkinter import * import tkFont root = Tk() 

create a font similar to the example on the 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 

now you can set the font of the button

 button['font'] = helv36 

The size of the button will depend on your geometry manager, for example: grid or pack . Only the grid section is described in the layout section of the New Mexico Tech website, but effbot.org is also great reference material and covers the pack pretty well.

 from Tkinter import * import 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 when root.columnconfigure((0,2), weight=1) # when window is resized btn1.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 .

+13
source share

The tkdocs manual recommends using named fonts and styles if you want to customize the look:

 import random try: import tkinter as Tk import tkinter.ttk as ttk import tkinter.font as font except ImportError: # Python 2 import Tkinter as Tk import ttk import tkFont as font def 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 font MyFont = font.Font(weight='bold') query = Tk.StringVar() ttk.Entry(parent, textvariable=query, font=MyFont).grid() # set font directly ttk.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 use root.after(3000, lambda: ttk.Style().configure('TButton', font=MyFont)) # change font size for everything that uses MyFont root.after(5000, lambda: MyFont.configure(size=48)) # in 5 seconds root.mainloop() 
+6
source share

All Articles