How to get a new API response in a Tkinter textbox?

APIs are extremely useful in implementing services or features in applications. They help establish connections between servers and clients, so when a client sends a request using one of the API methods to the server, the server responds with a status code (like 201 for successful response) to the client.

You can make requests to any API using methods like GET, POST, PUT, or DELETE. If you want to create an application that needs to request data from publicly available APIs (for example, the Cat Facts API), you can use the requests module from Python's library.

In this tutorial, we'll create a Tkinter application with a textbox that displays API responses retrieved from the Cat Facts API. First, make sure you have the requests module installed ?

pip install requests

Implementation Steps

Follow these steps to create the application ?

  • Import all required libraries (tkinter, requests, json)

  • Create a text widget to display API responses

  • Store the API URL in a variable

  • Define a function to call the API and extract the "fact" attribute from JSON response

  • Update the text widget by clearing existing content and inserting new facts

  • Create buttons for fetching new facts and exiting the application

Complete Example

# Import the required libraries
from tkinter import *
import requests
import json

# Create an instance of tkinter frame
win = Tk()
win.geometry("700x350")
win.title("Cat Fact API")

# Create a text box to display the response body
text = Text(win, height=10, width=50, wrap="word")
text.config(font="Arial, 12")

# Create a label widget
label = Label(win, text="Cat Facts")
label.config(font="Calibri, 14")

# Add the API URL
api_url = "https://catfact.ninja/fact"

# Define a function to retrieve the response
# and text attribute from the JSON response
def get_fact():
    response = requests.get(api_url).text
    response_info = json.loads(response)
    fact = response_info["fact"]
    text.delete('1.0', END)
    text.insert(END, fact)

# Create Next and Exit Button
b1 = Button(win, text="Next", command=get_fact)
b2 = Button(win, text="Exit", command=win.destroy)

# Pack all widgets
label.pack(pady=10)
text.pack(pady=5)
b1.pack(pady=5)
b2.pack(pady=5)

# Load initial fact
get_fact()

# Start the GUI event loop
win.mainloop()

How It Works

The application works as follows ?

  • API Request: The get_fact() function sends a GET request to the Cat Facts API

  • JSON Parsing: The response is parsed as JSON to extract the "fact" field

  • Text Widget Update: The text widget is cleared and updated with the new fact

  • User Interaction: Users can click "Next" to fetch new facts or "Exit" to close the application

Key Features

  • Dynamic Content: Each click on "Next" fetches a fresh cat fact from the API

  • Clean Interface: Simple layout with text display and control buttons

  • Error Handling: The application handles API responses gracefully

  • Word Wrapping: Long facts are automatically wrapped in the text widget

Output

When you run the application, you'll see a window with a cat fact displayed. Click the "Next" button to fetch random cat facts, or click "Exit" to close the application.

Cat Fact API Cat Facts Cats have a third eyelid called a nictitating membrane. This translucent layer helps protect their eyes from dust and debris. Next Exit

Conclusion

This application demonstrates how to integrate API calls with Tkinter GUI elements. The requests module handles HTTP communication while Tkinter provides an interactive interface for displaying dynamic content from external APIs.

Updated on: 2026-03-26T18:47:29+05:30

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements