Introduction
Basic Widgets
Toplevel Widgets
Geometry Management
Binding Functions
Working with Images in Tkinter
Tkinter Advance
Applications and Projects
Tkinter is the standard GUI toolkit for Python and is included with most Python installations. Using Tkinter, one can create simple GUIs to display and manipulate images. In this tutorial, I'll show you how to read and display an image using Python and Tkinter.
Install the required libraries:
pip install pillow
We need the Pillow
library to handle different image formats, as the built-in image support in Tkinter is limited to PPM and GIF.
Importing Libraries
Start by importing the necessary libraries.
from tkinter import Tk, Label, Button, filedialog from PIL import Image, ImageTk
Create a Function to Open and Display an Image
This function will use filedialog
to open a dialog box for the user to select an image file. It will then use the Pillow
library to open and read the image and then display it using Tkinter.
def open_image(): file_path = filedialog.askopenfilename() # Open file dialog if not file_path: return image = Image.open(file_path) photo = ImageTk.PhotoImage(image) label.config(image=photo) label.image = photo
Create the Main Window
Here, you'll create the main application window, add a button to open images, and a label to display the selected image.
root = Tk() root.title("Image Viewer") # Button to open image btn = Button(root, text="Open Image", command=open_image) btn.pack(pady=20) # Label to display the image label = Label(root) label.pack(pady=20) root.mainloop()
When you run this code, you'll get a simple GUI application with a button to open an image. Once an image is opened, it's displayed in the application window.
This is a basic example. You can extend it to include more features like image editing, zooming, scrolling, etc. based on your requirements.
In this example, we'll use the PhotoImage
class from Tkinter to read and display an image.
import tkinter as tk from tkinter import PhotoImage root = tk.Tk() root.title("Image Display Example") # Load the image image_path = "path/to/your/image.png" photo = PhotoImage(file=image_path) # Display the image on a Label label = tk.Label(root, image=photo) label.pack() root.mainloop()
To load images with Tkinter, use the PhotoImage
class. Make sure the image format is supported by PhotoImage
(GIF, PGM, PPM, and PNG).
# ... (previous code) # Load the image image_path = "path/to/your/image.png" photo = PhotoImage(file=image_path) # ... (remaining code)
You can display images in a Tkinter canvas by creating an Canvas
widget and using the create_image
method.
# ... (previous code) # Create a Canvas canvas = tk.Canvas(root, width=photo.width(), height=photo.height()) canvas.pack() # Display the image on the Canvas canvas.create_image(0, 0, anchor=tk.NW, image=photo) root.mainloop()
To open and show an image in Tkinter, use the filedialog
module to open a file dialog for selecting an image.
from tkinter import filedialog # ... (previous code) # Open a file dialog to choose an image image_path = filedialog.askopenfilename() # Load and display the selected image photo = PhotoImage(file=image_path) label = tk.Label(root, image=photo) label.pack() root.mainloop()
To work with images in a Tkinter GUI, you can use various widgets like Label
, Canvas
, and Button
to display and interact with images.
# ... (previous code) # Create a button with an image button_image = PhotoImage(file="path/to/button_image.png") button = tk.Button(root, image=button_image, command=lambda: print("Button clicked!")) button.pack() root.mainloop()
Tkinter itself doesn't provide extensive image processing capabilities, but you can integrate external libraries like PIL (Pillow) for image processing.
from PIL import Image, ImageTk # ... (previous code) # Open and process an image using Pillow pil_image = Image.open(image_path) processed_image = pil_image.rotate(45) # Convert the processed image to PhotoImage processed_photo = ImageTk.PhotoImage(processed_image) # Display the processed image label = tk.Label(root, image=processed_photo) label.pack() root.mainloop()
You can add images to Tkinter labels using the Label
widget and the image
option.
# ... (previous code) # Load the image image_path = "path/to/your/image.png" photo = PhotoImage(file=image_path) # Create a label with the image label = tk.Label(root, image=photo, text="Image Label") label.pack() root.mainloop()
The PhotoImage
class in Tkinter is specifically designed for handling images. It supports various image formats and is commonly used for displaying images in Tkinter widgets.
# ... (previous code) # Load the image using PhotoImage photo = PhotoImage(file="path/to/your/image.png") # Create a label with the image label = tk.Label(root, image=photo) label.pack() root.mainloop()