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

How LinkedIn is using Microsoft's chat for creating technical articles

LinkedIn is a professional networking platform that connects millions of users across various industries and fields. One of the main features of LinkedIn is the ability to share and discover content that is relevant to your career and interests. However, creating high-quality content can be challenging, especially for technical topics that require specialized knowledge and skills. How LinkedIn is using Microsoft's chat for creating technical articles That's why LinkedIn has partnered with Microsoft to leverage its chat mode, a powerful tool that can help users generate content such as articles, reports, presentations, and more. Microsoft's chat mode is a conversational interface that allows users to interact with Bing, the web search engine developed by Microsoft. Users can ask Bing questions, request information, or give commands in natural language, and Bing will respond with appropriate answers, suggestions, or actions. How LinkedIn is using Microsoft's chat for cre...

What is so special about MidJourney v5 release?

Artwork by MidJourney MidJourney is a popular online service that allows users to generate realistic and artistic images from text prompts using artificial intelligence. It has been widely used by artists, designers, writers, and hobbyists for various creative purposes. However, until recently, MidJourney had some limitations in its image quality and diversity. For example, some images looked blurry or distorted, some had unrealistic colors or lighting effects, and some had anatomical errors such as extra fingers or missing limbs. That's why many users have been eagerly waiting for the MidJourney v5 release, which promises to deliver significant improvements in image generation. According to the MidJourney team, v5 is not just an update but a complete overhaul of the underlying algorithm that powers the service. Here are some of the key features and benefits of v5 that make it so special: - High resolution : v5 can generate images up to 1024x1024 pixels, which is four times larger ...

Living a Joyful Life on a Budget: Books to Inspire and Guide You

Living a Joyful Life on a Budget: Books to Inspire and Guide You Money can be a significant source of stress and worry for many people, especially when you are struggling to make ends meet. The pressure to pay off debts or keep up with the expenses of daily living can leave you feeling drained and overwhelmed. However, it is possible to find joy and fulfillment in life, even when you have a limited income. In this article, we will explore some of the best books that offer insights and strategies for living a joyful life on a budget. "The Art of Frugal Hedonism" by Annie Raser-Rowland and Adam Grubb If you are looking for a book that will inspire you to find pleasure in the simple things in life, "The Art of Frugal Hedonism" is an excellent place to start. This book is a celebration of the joys of frugal living, and it offers practical tips and suggestions for how to live a rich and fulfilling life without spending a lot of money. "The Art of Frugal Hedonism...

Beautiful Soup: The Ultimate Web Scraping Solution

Beautiful Soup: The Ultimate Web Scraping Solution Beautiful Soup is a popular Python library used for web scraping purposes. This library is built on top of the HTML parsing libraries, which enables users to parse the HTML content and extract data from it in a clean and readable format. Beautiful Soup makes it easier for developers to get the desired data from websites without having to go through a lot of hassle. What is Beautiful Soup? Beautiful Soup is a Python library that is used to parse HTML and XML documents. It is used to extract data from web pages, which can be further used for analysis or any other purposes. Beautiful Soup is a third-party library, which means it is not included in the standard Python library. How does Beautiful Soup work? Beautiful Soup works by taking the HTML content of a website and then parsing it into a readable format. The HTML content is then organized into a tree-like structure, which makes it easier to extract data from it. Beautiful Soup then p...

Retirement Planning Decade by Decade: A Guide to Secure Your Future

Retirement Planning Decade by Decade: A Guide to Secure Your Future Retirement planning is an important aspect of financial planning that everyone should take seriously. No matter what stage of life you are in, it's never too early or too late to start preparing for retirement. This guide will provide you with a decade-by-decade breakdown of what to expect, trade-offs to navigate, essential elements to achieving success, planning tips, and key numbers to keep in mind when it comes to saving for retirement. Your 20s: Getting Started and Building Your Foundation In your 20s, you are just starting out in your career and figuring out what you want to do with your life. The main trade-off you will face is balancing your short-term financial goals with your long-term retirement goals. The essential element to achieving success in this decade is to start early and take advantage of compound growth. A good starting point would be to save at least 15% of your gross salary, with 20% being ev...