← Go Back

How to Insert an Image in Tk (tkinter)

An image can be loaded from disk and displayed on a label (tk.Label or ttk.Label) using the tk.PhotoImage class:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.title("Image in Tk")
root.geometry("400x300")
image = tk.PhotoImage(file="image.png")
label = ttk.Label(image=image)
label.pack()
root.mainloop()



The image.png file must be in the current working directory.

This other code does not require any extra files because it includes the image data encoded via base64:

import tkinter as tk
from base64 import b64decode
from tkinter import ttk

root = tk.Tk()
root.title("Image in Tk")
root.geometry("400x300")
# Load image from memory.
raw_image = "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"
image = tk.PhotoImage(data=b64decode(raw_image))
label = ttk.Label(image=image)
label.pack()
root.mainloop()


tkinter desktop-applications


🐍 You might also find interesting: