¿Cómo obtener una nueva respuesta de API en un cuadro de texto de Tkinter?

En este artículo, veremos cómo realizar una solicitud de API y luego insertarla en un cuadro de texto de Tkinter usando Python. Antes de continuar, cubriremos algunos conceptos básicos relacionados con nuestro artículo que usaremos con frecuencia.

  • Solicitud : Las requests son necesarias para jugar con la web. Si desea utilizar API, descargar páginas completas de Facebook o hacer cualquier otra cosa agradable, deberá realizar una solicitud a la URL. Cuando se trata de API REST y web scraping, las requests son cruciales.
  • Tkinter: Tkinter es el método más utilizado. Es una interfaz estándar de Python para el kit de herramientas Tk GUI proporcionado por Python. El enfoque más rápido y simple para construir aplicaciones GUI es con Python y Tkinter. Usar Tkinter para crear una GUI es una operación simple.
  • API: Las API normalmente nos permiten obtener información de un servidor que nos ayuda en nuestros proyectos. Realizamos requests a las API utilizando diferentes métodos como, por ejemplo, GET, POST, etc.

Paquetes requeridos

Para hacer una GUI necesitamos instalar Tkinter.

pip install tkinter

Para realizar una solicitud de API, generalmente usamos una biblioteca de python llamada request

pip install requests

Implementación paso a paso

Paso 1: Realización de una solicitud de API

Para realizar una solicitud GET a una API, usamos el método request.get() . Para este tutorial, usaremos una API de código abierto llamada Quotable . Tiene una ruta ‘/random’ que nos da una cotización aleatoria.

Python3

import requests
  
# Response Object
r = requests.get('https://api.quotable.io/random')

Paso 2: obtener los datos de la solicitud de API

Por lo general, las API devuelven los datos en formato JSON. Pero nuestra biblioteca de requests nos facilita las cosas y las convierte en un objeto de diccionario de Python. Podemos obtener esos datos mediante el método r .json() :

Python3

import requests
  
r = requests.get('https://api.quotable.io/random')
data = r.json()

Producción:

{‘_id’: ‘w4QwG7e8hNr7’, ‘tags’: [‘famous-quotes’], ‘content’: ‘El único Zen que encuentras en la cima 
de las montañas es el Zen que traes allí.’, ‘author’: ‘Robert M. Pirsig’, ‘authorSlug’: ‘robert-m-pirsig’, ‘longitud’: 77, ‘dateAdded’: ‘2019-02-17’, ‘dateModified’: ‘2019-02-17’}

Paso 4: en este diccionario, solo importamos datos que están presentes en la clave de ‘contenido’ que podemos almacenar en una variable

quote = data['content']

Paso 5: Creación de una aplicación Tkinter básica

Entonces, aquí tenemos una aplicación Tkinter muy básica con un cuadro de texto y un botón

Python3

import tkinter as tk
from tkinter import END, Text
from tkinter.ttk import Button
  
root = tk.Tk()
root.title('Quoter')
text_box = Text(root, height=10, width=50)
get_button = Button(root, text="Get Quote", command=get_quote)
  
text_box.pack()
get_button.pack()
root.mainloop()

Paso 6: crear una función de solicitud de API

Ahora crearemos una función que obtendrá los datos de la API y editaremos el cuadro de texto con esos datos:

  • text_box .delete () elimina todo el texto que se encuentra actualmente en el widget TextBox del índice especificado. En este caso, es desde 1.0 hasta el final, lo que significa que se borrará todo el cuadro de texto.
  • El text_box .insert() inserta datos en el TextBox desde el índice especificado. Como el índice es END, que en nuestro caso será el primer índice, insertará en el TextBox la cotización obtenida de la API.

Python3

def get_quote():
    r = requests.get('https://api.quotable.io/random')
    data = r.json()
    quote = data['content']
    text_box.delete('1.0', END)
    text_box.insert(END, quote)   

Implementación de código

Python3

# import library
import requests
import tkinter as tk
from tkinter import END, Text
from tkinter.ttk import Button
  
# create a main window
root = tk.Tk()
root.title('Quoter')
  
# function that will get the data
# from the API
def get_quote():
    # API request
    r = requests.get('https://api.quotable.io/random')
    data = r.json()
    quote = data['content']
      
    # deletes all the text that is currently
    # in the TextBox
    text_box.delete('1.0', END)
      
    # inserts new data into the TextBox
    text_box.insert(END, quote)
  
  
text_box = Text(root, height=10, width=50)
get_button = Button(root, text="Get Quote", command=get_quote)
  
text_box.pack()
get_button.pack()
root.mainloop()

Producción:

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

 

Al hacer clic en el botón se generaría una nueva cotización:

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

 

Publicación traducida automáticamente

Artículo escrito por indorexian y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *