
- Python - Home
- Python - Overview
- Python - History
- Python - Features
- Python vs C++
- Python - Hello World Program
- Python - Application Areas
- Python - Interpreter
- Python - Environment Setup
- Python - Virtual Environment
- Python - Basic Syntax
- Python - Variables
- Python - Data Types
- Python - Type Casting
- Python - Unicode System
- Python - Literals
- Python - Operators
- Python - Arithmetic Operators
- Python - Comparison Operators
- Python - Assignment Operators
- Python - Logical Operators
- Python - Bitwise Operators
- Python - Membership Operators
- Python - Identity Operators
- Python - Operator Precedence
- Python - Comments
- Python - User Input
- Python - Numbers
- Python - Booleans
- Python - Control Flow
- Python - Decision Making
- Python - If Statement
- Python - If else
- Python - Nested If
- Python - Match-Case Statement
- Python - Loops
- Python - for Loops
- Python - for-else Loops
- Python - While Loops
- Python - break Statement
- Python - continue Statement
- Python - pass Statement
- Python - Nested Loops
- Python Functions & Modules
- Python - Functions
- Python - Default Arguments
- Python - Keyword Arguments
- Python - Keyword-Only Arguments
- Python - Positional Arguments
- Python - Positional-Only Arguments
- Python - Arbitrary Arguments
- Python - Variables Scope
- Python - Function Annotations
- Python - Modules
- Python - Built in Functions
- Python Strings
- Python - Strings
- Python - Slicing Strings
- Python - Modify Strings
- Python - String Concatenation
- Python - String Formatting
- Python - Escape Characters
- Python - String Methods
- Python - String Exercises
- Python Lists
- Python - Lists
- Python - Access List Items
- Python - Change List Items
- Python - Add List Items
- Python - Remove List Items
- Python - Loop Lists
- Python - List Comprehension
- Python - Sort Lists
- Python - Copy Lists
- Python - Join Lists
- Python - List Methods
- Python - List Exercises
- Python Tuples
- Python - Tuples
- Python - Access Tuple Items
- Python - Update Tuples
- Python - Unpack Tuples
- Python - Loop Tuples
- Python - Join Tuples
- Python - Tuple Methods
- Python - Tuple Exercises
- Python Sets
- Python - Sets
- Python - Access Set Items
- Python - Add Set Items
- Python - Remove Set Items
- Python - Loop Sets
- Python - Join Sets
- Python - Copy Sets
- Python - Set Operators
- Python - Set Methods
- Python - Set Exercises
- Python Dictionaries
- Python - Dictionaries
- Python - Access Dictionary Items
- Python - Change Dictionary Items
- Python - Add Dictionary Items
- Python - Remove Dictionary Items
- Python - Dictionary View Objects
- Python - Loop Dictionaries
- Python - Copy Dictionaries
- Python - Nested Dictionaries
- Python - Dictionary Methods
- Python - Dictionary Exercises
- Python Arrays
- Python - Arrays
- Python - Access Array Items
- Python - Add Array Items
- Python - Remove Array Items
- Python - Loop Arrays
- Python - Copy Arrays
- Python - Reverse Arrays
- Python - Sort Arrays
- Python - Join Arrays
- Python - Array Methods
- Python - Array Exercises
- Python File Handling
- Python - File Handling
- Python - Write to File
- Python - Read Files
- Python - Renaming and Deleting Files
- Python - Directories
- Python - File Methods
- Python - OS File/Directory Methods
- Python - OS Path Methods
- Object Oriented Programming
- Python - OOPs Concepts
- Python - Classes & Objects
- Python - Class Attributes
- Python - Class Methods
- Python - Static Methods
- Python - Constructors
- Python - Access Modifiers
- Python - Inheritance
- Python - Polymorphism
- Python - Method Overriding
- Python - Method Overloading
- Python - Dynamic Binding
- Python - Dynamic Typing
- Python - Abstraction
- Python - Encapsulation
- Python - Interfaces
- Python - Packages
- Python - Inner Classes
- Python - Anonymous Class and Objects
- Python - Singleton Class
- Python - Wrapper Classes
- Python - Enums
- Python - Reflection
- Python Errors & Exceptions
- Python - Syntax Errors
- Python - Exceptions
- Python - try-except Block
- Python - try-finally Block
- Python - Raising Exceptions
- Python - Exception Chaining
- Python - Nested try Block
- Python - User-defined Exception
- Python - Logging
- Python - Assertions
- Python - Built-in Exceptions
- Python Multithreading
- Python - Multithreading
- Python - Thread Life Cycle
- Python - Creating a Thread
- Python - Starting a Thread
- Python - Joining Threads
- Python - Naming Thread
- Python - Thread Scheduling
- Python - Thread Pools
- Python - Main Thread
- Python - Thread Priority
- Python - Daemon Threads
- Python - Synchronizing Threads
- Python Synchronization
- Python - Inter-thread Communication
- Python - Thread Deadlock
- Python - Interrupting a Thread
- Python Networking
- Python - Networking
- Python - Socket Programming
- Python - URL Processing
- Python - Generics
- Python Libraries
- NumPy Tutorial
- Pandas Tutorial
- SciPy Tutorial
- Matplotlib Tutorial
- Django Tutorial
- OpenCV Tutorial
- Python Miscellenous
- Python - Date & Time
- Python - Maths
- Python - Iterators
- Python - Generators
- Python - Closures
- Python - Decorators
- Python - Recursion
- Python - Reg Expressions
- Python - PIP
- Python - Database Access
- Python - Weak References
- Python - Serialization
- Python - Templating
- Python - Output Formatting
- Python - Performance Measurement
- Python - Data Compression
- Python - CGI Programming
- Python - XML Processing
- Python - GUI Programming
- Python - Command-Line Arguments
- Python - Docstrings
- Python - JSON
- Python - Sending Email
- Python - Further Extensions
- Python - Tools/Utilities
- Python - GUIs
- Python Advanced Concepts
- Python - Abstract Base Classes
- Python - Custom Exceptions
- Python - Higher Order Functions
- Python - Object Internals
- Python - Memory Management
- Python - Metaclasses
- Python - Metaprogramming with Metaclasses
- Python - Mocking and Stubbing
- Python - Monkey Patching
- Python - Signal Handling
- Python - Type Hints
- Python - Automation Tutorial
- Python - Humanize Package
- Python - Context Managers
- Python - Coroutines
- Python - Descriptors
- Python - Diagnosing and Fixing Memory Leaks
- Python - Immutable Data Structures
- Python Useful Resources
- Python - Questions & Answers
- Python - Interview Questions & Answers
- Python - Online Quiz
- Python - Quick Guide
- Python - Reference
- Python - Cheatsheet
- Python - Projects
- Python - Useful Resources
- Python - Discussion
- Python Compiler
- NumPy Compiler
- Matplotlib Compiler
- SciPy Compiler
Taking Screenshots Programmatically with Python
The method of programming screenshots may be useful in some situations such as for example automated testing or producing documentaries on failures and instructional content. Being a dynamic language that it is, Python has several libraries such as pytest which are user friendly to use; out of these, pyscreenshot is regarded as one of the easiest and fastest. With this tool, screens can be captured for an entire monitor or just part of it.
Installation
Before we start the code, it's necessary to install the pyscreenshot library. This can be done easily through pip.
Syntax
pip install pyscreenshot
Also, make sure you install the Python library pillow in your system, which will help you with image processing capabilities.
Syntax
pip install pillow
Basic Screenshot
The easiest way to take a screenshot is to capture the entire screen. The ImageGrab.grab() captures the whole screen and returns it as an image object. The screenshot.show() opens the captured screenshot in the default image viewer.
Example
import pyscreenshot as ImageGrab # Capture full screen screenshot = ImageGrab.grab() # Save the screenshot to a file screenshot.save('screenshot.png') # You can change the file name and extension as needed # Display the screenshot screenshot.show()
Output
The screenshot will be displayed in the default image viewer.

Capturing a Specific Region
Sometimes, you only need a portion of the screen not the whole portion. In this case, you can specify capture a specific region. The bbox is a tuple defining the region to capture and the ImageGrab.grab(bbox=bbox) captures the specified region.
Example
import pyscreenshot as ImageGrab # Define the bounding box (left_x, top_y, right_x, bottom_y) bbox = (10, 10, 500, 500) # Capture a specific region screenshot = ImageGrab.grab(bbox=bbox) # Display the screenshot screenshot.show()
Output
The defined region will be displayed in the default image viewer.

Saving the Screenshot
To save the captured screenshot to a file, use the save method. The screenshot.save('screenshot.png') saves the screenshot to a file named screenshot.png.
Example
import pyscreenshot as ImageGrab # Capture full screen screenshot = ImageGrab.grab() # Save the screenshot to a file screenshot.save('screenshot.png')
Output
The screenshot is saved as screenshot.png in the current working directory.
Adding Delay Before Taking a Screenshot
Introducing a delay before capturing the screenshot can be useful in various scenarios. The time.sleep(5) pauses execution for 5 seconds before taking the screenshot.
Example
import pyscreenshot as ImageGrab import time # Delay for 5 seconds time.sleep(5) # Capture full screen screenshot = ImageGrab.grab() # Display the screenshot screenshot.show()
Output
The screenshot is taken after a 5-second delay and displayed in the default image viewer.
Taking Multiple Screenshots in Succession
You might need to capture multiple screenshots in quick succession. The loop captures five screenshots, each saved with a unique filename. The time.sleep(2) introduces a 2-second delay between each capture.
Example
import pyscreenshot as ImageGrab import time for i in range(5): # Capture full screen screenshot = ImageGrab.grab() # Save the screenshot to a file screenshot.save(f'screenshot_{i}.png') # Delay for 2 seconds time.sleep(2)
Output
Five screenshots are saved as screenshot_0.png, screenshot_1.png, screenshot_2.png, screenshot_3.png, and screenshot_4.png.
Look at that it will create multiple images screenshots

Adding White Text to Screenshots
Sometimes, you may want to add text to your screenshots for annotations or labels. Below is an example of how to add white text to a screenshot using the Pillow library in Python. This example captures a screenshot, adds white text to it, and then saves and displays the modified image.
Installation
Before start the code, you must install the pillow library. This can be done easily using pip.
pip install pillow
Example
from PIL import Image, ImageDraw, ImageFont import pyscreenshot as ImageGrab # Define the text to add x = "Hello, World!" try: # Capture the screenshot screenshot = ImageGrab.grab() # Create an ImageDraw object draw = ImageDraw.Draw(screenshot) # Load a font try: # Use a truetype font (you can download a .ttf file and specify the path here) font = ImageFont.truetype("arial.ttf", size=50) except IOError: # Fallback to default font if the specified font is not available font = ImageFont.load_default() # Define the position and color for the text text_position = (50, 50) # Adjusted position text_color = "white" # Change text color to white # Add text to the screenshot draw.text(text_position, x, font=font, fill=text_color) # Save the screenshot with text screenshot.save('screenshot_with_text.png') # Display the screenshot screenshot.show() print("Screenshot captured and saved successfully.") except Exception as e: print(f"An error occurred: {e}")
Output

Conclusion
In this guide, we show you various techniques for capturing screenshots using pyscreenshot in Python. From basic full-screen captures to targeting specific regions, saving files, adding delays, and taking multiple screenshots in succession, pyscreenshot proves to be a versatile tool for automation and instructional content creation.