Skip to main content

How to Create a Simple Image Viewer with Python?

How to Create a Simple Image Viewer with Python?
How to Create a Simple Image Viewer with Python?

In this article, we will go through the steps of creating a simple image viewer app using Python's GUI library Tkinter. This app allows the user to navigate through a folder of images, viewing each one in turn.

Introduction

Have you ever wanted to view a folder of images in an organized manner? Well, look no further! With a little bit of Python code, you can create a simple image viewer that does exactly that. We'll be using Tkinter, a popular Python GUI library, to make this app.

Building the App

The first step in building the image viewer app is to import the required libraries and create a GUI window using Tkinter. You'll then need to specify the dimensions of the window, as well as its title, font, and other visual elements.

Once the window is set up, you can start adding widgets to it. In this case, we'll be using label widgets to display the images. To navigate through the images, we'll add buttons for "Next" and "Previous" navigation. The code will load the next or previous image in the folder based on the button that is pressed.

Adding Functionality

Next, we'll add the functionality to our image viewer. This includes defining the folder that contains the images, parsing the values of the images, and loading each image in turn. We'll also specify what happens when the "Next" and "Previous" buttons are pressed.

The code for this step involves a bit of logic, but don't worry, it's not too difficult. Essentially, the code checks the current location of the image within the folder, and either increments or decrements it depending on the button that was pressed. The code then loads the image at the new location and displays it in the window.

Finishing Up

Finally, we'll add the finishing touches to our image viewer app. This includes positioning the "Next" and "Previous" buttons, as well as adding a "Close" button to close the window.

With these few simple steps, you now have a functional image viewer app built using Python and Tkinter. You can now easily view folders of images in an organized and user-friendly manner.

Food for Thought

Building a simple image viewer is just the beginning of what you can do with Python and Tkinter. There are many more features and capabilities that you can add to this app, such as zooming in on images, adding a thumbnail view, and much more. The possibilities are endless, and the best part is, you can build it all with just a little bit of Python code. So go ahead and try it out for yourself!

Example

Here is an example:

import tkinter as tk
from tkinter import filedialog
from tkinter import messagebox
from PIL import Image, ImageTk
import os

class ImageViewer:
    def __init__(self, master):
        self.master = master
        self.master.title("Python Simple Image Viewer")
        self.master.geometry("600x600")

        self.top_frame = tk.Frame(self.master, width=600, bd=1, relief="solid")
        self.top_frame.pack(side="top", fill="both", expand="yes")

        self.mid_frame = tk.Frame(self.master, width=300, height=200, bd=1, relief="solid")
        self.mid_frame.pack(side="top")

        self.images = []
        self.location = 0

        self.lbl_title = tk.Label(self.top_frame, text="Label", font=("Arial", 20))
        self.lbl_title.pack()

        self.forward = tk.Button(self.top_frame, text="Forward", command=lambda: self.load_image(1))
        self.forward.pack(side="left")

        self.back = tk.Button(self.top_frame, text="Back", command=lambda: self.load_image(-1))
        self.back.pack(side="left")

        self.parse_folder()

    def parse_folder(self):
        file_path = filedialog.askdirectory()
        if not file_path:
            messagebox.showerror("Error", "No folder selected.")
            return

        try:
            for file in os.listdir(file_path):
                if file.endswith(".jpg") or file.endswith(".png"):
                    self.images.append(os.path.join(file_path, file))
        except Exception as e:
            messagebox.showerror("Error", str(e))
            return

        if not self.images:
            messagebox.showerror("Error", "No images found in the selected folder.")
            return

        self.load_image(0)

    def load_image(self, direction):
        self.location += direction
        if self.location >= len(self.images):
            self.location = 0
        elif self.location < 0:
            self.location = len(self.images) - 1

        image = Image.open(self.images[self.location])
        image = image.resize((300, 200), Image.ANTIALIAS)
        image = ImageTk.PhotoImage(image)

        self.lbl_title.config(image=image)
        self.lbl_title.image = image

if __name__ == "__main__":
    root = tk.Tk()
    viewer = ImageViewer(root)
    root.mainloop() 

Popular posts from this blog

Step by Step Tutorial - Python

 We have uploaded our course material for Python on Github. https://github.com/SiriSarah/Python

Unlocking Endless Possibilities: Hugging Face Chat

If you're looking for a chatbot that can generate natural language responses for various tasks and domains, you might have heard of ChatGPT, a powerful model developed by OpenAI. But did you know that there is an open-source alternative to ChatGPT that you can use for free? It's called HuggingChat, and it's created by Hugging Face, a popular AI startup that provides ML tools and AI code hub. In this article, I'll show you what HuggingChat can do, how it works, and why it's a great option for anyone interested in chatbot technology. Hugging Face Chat HuggingChat is a web-based chatbot that you can access at hf.co/chat. It's built on the LLaMa 30B SFT 6 model , which is a modified version of Meta's 30 billion parameter LLaMA model. The LLaMa model is trained on a large corpus of text from various sources, such as Wikipedia, Reddit, news articles, books, and more. It can generate text in natural language or in a specific format when prompted by the user. Huggin...

Python Interview Questions: Python Cache

Python Interview Questions: Python Cache  Can you explain how you would use decorators in Python to add caching functionality to a specific function in a large application, and how you would handle cache invalidation? Yes, I can explain how to use decorators in Python to add caching functionality to a specific function in a large application and how to handle cache invalidation. First, I would create a decorator function called "cache" that takes in the function to be decorated as an argument. Inside the decorator function, I would define a dictionary to store the function's results, with the function's arguments as the keys and the results as the values. Next, I would create a nested function called "wrapper" which would check if the function's arguments existed in the dictionary. If they do, it will return the cached result. If they don't, it would call the original function, store the result in the dictionary, and then return the result. The decor...

Python Tutorial Chapter #2: Basic Data Types

In Python, there are several built-in data types that you can use to store and manipulate data. In this tutorial, we will cover the following data types: Python Tutorial Chapter #2: Basic Data Types Integers: Integers are whole numbers that can be positive, negative, or zero. In Python, you can create an integer by assigning an integer value to a variable. For example: Floats: Floats are numbers with decimal points. In Python, you can create a float by assigning a float value to a variable. For example: Strings: Strings are sequences of characters. In Python, you can create a string by enclosing a sequence of characters in quotation marks. You can use single quotes or double quotes, but you must use the same type of quotes to start and end the string. For example: Lists: Lists are ordered collections of items. In Python, you can create a list by enclosing a comma-separated list of items in square brackets. Lists can contain items of any data type, and the items do not have to be of the...

Creating a Media Player in Python: Using Tkinter and Pygame to Control and Play MP3 and MP4 files

Creating a Media Player in Python: Using Tkinter and Pygame to Control and Play MP3 and MP4 files A media player program in Python using the Tkinter library for the GUI and the Pygame library for playing audio and video files:  Import statements: The program first imports the required libraries - tkinter as tk, filedialog, and messagebox from tkinter, and pygame. GUI setup: The Tk() method is used to create the main window of the application, and its title and dimensions are set using the title() and geometry() methods. Pygame initialization: The Pygame library is initialized using the pygame.init() method. Function definitions: The program defines several functions that perform different actions in the media player, such as browse_file() which opens a file dialog to select a file, play_file() which plays the selected file using Pygame's mixer module, pause_file() which pauses the playing file, resume_file() which resumes the playing file, stop_file() which stops the playing file, ...