Tkinter Label

Created with Sketch.

Tkinter Label

Summary: in this tutorial, you’ll learn about Tkinter Label widget and how to use it to display a text or image on the screen.

Introduction to Tkinter Label widget

Tkinter Label widget is used to display a text or image on the screen. To use a Label widget, you use the following general syntax:

label = ttk.Label(container, **options)

Code language: Python (python)

The Label widget has many options that allow you to customize its appearance:

OptionsMeaning
anchorWhen the text and/or image are smaller than the width, the anchor option determines where to position them tk.W, tk.CENTER or tk.E for left, center, and right alignment respectively.
backgroundSet the background color for the label
borderwidthAdd a border around the label.
class_Specify a custom widget class name for changing the label’s appearance.
compoundSpecify how to display both text and image on the Label.
cursorSpecify the mouse cursor’s appearance when the mouse is over the widget.
fontSpecify the font style for displaying text
foregroundSpecify the color of the text
imageSpecify an image or images to show in addition to text or instead of text.
justifyIf the text contains newline characters, the justify option specifies how each line is positioned horizontally.
The valid values are tk.LEFT (left-justify), tk.CENTER (center), and tk.RIGHT (right-justify).
paddingAdd more space around the label.
reliefUse this option to create an effect for the Label .e.g, flat, raised, sunken, groove, and ridge.
styleSpecify the custom widget style.
takefocusis a boolean value that specifies whether the label is visited during focus traversal. It defaults to False which doesn’t get focus.
textSpecify a string of text to show in the widget
textvariableA StringVar instance that holds the text value of the widget. It overrides the text option if both textvariable and text are available.
underlineSpecify the position of the letter that should be underlined e.g, underline = 0 would underline the letter E in the text='Exit'
widthSpecify the number of characters to show
wraplengthChop the text into the lines which less than the length specified by the wraplength option.

The following shows a skeleton program that we’ll use to illustrate various options of the Label widget:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.geometry('300x200')
root.resizable(False, False)
root.title('Label Widget Demo')

# show the label here

root.mainloop()

Code language: Python (python)

Displaying a regular label

The following program shows how to display a regular label on the root window:

import tkinter as tk
from tkinter.ttk import Label

root = tk.Tk()
root.geometry('300x200')
root.resizable(False, False)
root.title('Label Widget Demo')

# show a label
label = Label(root, text='This is a label')
label.pack(ipadx=10, ipady=10)

root.mainloop()

Code language: Python (python)

Output:

How it works.

  • First, import Label class from the tkinter.ttk module.
  • Second, create the root window and set its properties including size, resizeable, and title.
  • Third, create a new instance of the Label widget, set its container to the root window, and assign a literal string to its text property.

Setting a specific font for the Label

To set a particular font for a label, you pass the font keyword argument to the Label constructor like this:

font = ('font name', font_size)

Code language: Python (python)

The font keyword argument is a tuple that contains font name and size. For example:

font=("Helvetica", 14)

Code language: Python (python)

The following example shows a label with the Helvetica font:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.geometry('300x200')
root.resizable(False, False)
root.title('Label Widget Demo')

# label with a specific font
label = ttk.Label(
root,
text='A Label with the Helvetica font',
font=("Helvetica", 14))

label.pack(ipadx=10, ipady=10)

root.mainloop()

Code language: Python (python)

Output:

Displaying an image

To use a Label widget to display an image, you follow these steps:

First, create a PhotoImage widget by passing the path to the photo to the PhotoImage constructor:

photo = tk.PhotoImage(file='./assets/python.png')

Code language: Python (python)

Second, assign the PhotoImage object to the image option of the Label widget:

Label(..., image=photo)

Code language: Python (python)

The following example shows how to use a Label widget to display an image:

import tkinter as tk
from tkinter import ttk

# create the root window
root = tk.Tk()
root.geometry('300x200')
root.resizable(False, False)
root.title('Label Widget Image')

# display an image label
photo = tk.PhotoImage(file='./assets/python.png')
image_label = ttk.Label(
root,
image=photo,
padding=5
)
image_label.pack()

root.mainloop()

Code language: Python (python)

Output:

Note that the image file is located at the /assets/ folder.

To display both text and image, you’ll use the text attribute and compound option.

The compound option specifies the position of the image relative to the text. Its valid values are:

CompoundEffect
'top'Display the image above the text.
'bottom'Display the image below the text.
'left'Display the image to the left of the text.
'right'Display the image to the right of the text.
'none'Display the image if there’s one, otherwise display the text. The compound option defaults to 'none'.
'text'Display the text, not the image
'image'Display the image, not the text.

The following program shows how to display both text and image on a label:

import tkinter as tk
from tkinter import ttk

# create the root window
root = tk.Tk()
root.geometry('300x200')
root.resizable(False, False)
root.title('Label Widget Image')

# display an image label
photo = tk.PhotoImage(file='./assets/python.png')
image_label = ttk.Label(
root,
image=photo,
text='Python',
compound='top'
)
image_label.pack()

root.mainloop()

Code language: PHP (php)

Output:

Summary

  • Use the Label widget to display a text or an image or both.

Leave a Reply

Your email address will not be published. Required fields are marked *