Aprenda a crear su propia aplicación de noticias con Python y la biblioteca Tkinter.

En este mundo acelerado, mantenerse actualizado con las últimas noticias es crucial. Cree su propia aplicación de noticias que le brinde noticias en diferentes categorías, como entretenimiento, deportes y tecnología accesible en cualquier plataforma al alcance de su mano.

Desarrollará esta aplicación usando Tkinter, la biblioteca GUI estándar para Python, y la potenciará usando la API de noticias que obtiene artículos de más de 80 000 fuentes.

Instalar tkinter y módulos de solicitudes

Tkinter es un módulo multiplataforma, simple y fácil de usar que puede utilizar para crear interfaces gráficas de usuario rápidamente. Algunos de los las aplicaciones que puede crear con Tkinter incluyen un reproductor de música, calendario, herramienta de conversión de peso, juego de revoltijo de palabras, etc.

Instalar tkinter en su sistema, ejecute el siguiente comando en la terminal:

pip instalar tkinter

El peticiones El módulo facilita la realización de solicitudes HTTP. Con este,

puede desarrollar aplicaciones interesantes, como un verificador de estado del sitio web, raspador web, bot monitor del mercado de valores y probador de rendimiento del sitio web. Para instalar el módulo de solicitudes, abra la terminal y ejecute el siguiente comando:

solicitudes de instalación de pip

Puede encontrar el código fuente completo de la aplicación Noticias usando Python en este repositorio GitHub.

Generar la clave API de noticias

Comience importando las bibliotecas requeridas. Regístrese en API de noticias y genera tu clave API. Con la cuenta de desarrollador gratuita, puede enviar hasta 100 solicitudes diarias, lo cual es excelente para probar y comenzar. Almacene la API en una variable que usará más tarde con la URL base para obtener los principales titulares según su país.

de tkinter importar *
de tkinter importar buzon de mensaje
importar peticiones

APIKey = 'TU_API_CLAVE'

Definir la estructura de la aplicación

Definir una clase, Aplicación de noticias. Haga referencia a la Clave API y tipo variables a nivel mundial. Defina un objeto de la clase e inicialice la ventana raíz. Establezca las dimensiones y el título de su aplicación. Defina dos listas, utilizará la primera lista para definir los botones y la segunda para definir las categorías de noticias que desea mostrar en su aplicación.

claseAplicación de noticias:
global apiKey, tipo
definitivamente__en eso__(uno mismo, raíz):
self.raíz = raíz
self.root.geometry('1000x650')
self.root.title("Aplicación de noticias")
self.newsCategoryButton = []
self.noticiasCategoría = ["general", "entretenimiento", "Deportes", "tecnología"]

Defina una etiqueta que actúe como un título para su aplicación. Pase el elemento principal en el que desea colocarlo, el texto que debe mostrar, el estilo de fuente, el relleno y el color de fondo que debe tener. Utilizar el embalar() opción de relleno para que la etiqueta ocupe todo el espacio en la dirección X.

Definir un EtiquetaMarco y establezca su elemento principal junto con el color de fondo que debe poseer. Utilizar el lugar() para organizarlo en las coordenadas especificadas. Además, pase el ancho y la altura del marco.

 título = Etiqueta (self.root, text="Aplicación de noticias", fuente=("Times New Roman", 28, "atrevido"), pady=2, bg='#ff007f').paquete (relleno=X)
F1 = LabelFrame (self.raíz, bg='#fc6c85')
F1.lugar (x=20, y=80, ancho=215, altura=210)

Defina un bucle for que se extienda a lo largo de la noticiasCat lista. Defina un botón en el marco definido anteriormente. Pase el texto que debe mostrar y conviértalo a mayúsculas. Pase el ancho, la profundidad del borde, el estilo de fuente y el color de fondo de los botones. Utilizar el red manager para organizar los botones en un formato de columna y agregar relleno en las direcciones X e Y.

Utilice el método de enlace para adjuntar el botón y el área de noticias. define que el Área de noticias La función se producirá con el clic izquierdo del ratón por parte del usuario. Agregue estos botones al noticiasCatButton lista definida anteriormente.

para i en rango (len (self.newsCategory)):
b = Botón (F1, text=self.newsCategory[i].upper(), width=15, bd=3, fuente="arial 14 negrita", bg='#c154c1')
b.grid (fila=i, columna=0, padx=10, pady=5)
b.enlazar('', ser. Área de noticias)
self.newsCategoryButton.append (b)

Defina un marco y pásele el elemento principal en el que desea colocarlo y la profundidad del borde que debe tener. Organícelo en las coordenadas especificadas y pase la altura y el ancho relativos. Defina una barra de desplazamiento vertical usando el orientar parámetro y colóquelo en este cuadro.

Defina un widget de texto. Pase el elemento principal como este marco junto con el estilo de fuente y el color de fondo que debe tener. Al establecer el valor de la comando ydesplazamiento como scroll_y.set obtiene la posición actual de la barra de desplazamiento en la interacción del usuario.

 F2 = Marco (self.raíz, bd=3)
F2.lugar (x=260, y=80, anchorel=0.7, alturarel=0.8)
scroll_y = Barra de desplazamiento (F2, orient=VERTICAL)
self.txtarea = Texto (F2, yscrollcommand=scroll_y.set, font=("Times New Roman", 15, "atrevido"), bg='#fc6c85')

Utilizar el embalar() opción de relleno para colocar la barra de desplazamiento en el lado derecho del marco y ocupar todo el espacio en la dirección Y. Al establecer el parámetro de comando como txtarea.yview, el movimiento de la barra de desplazamiento se vincula a las funciones de arriba y abajo. Entonces, cuando el usuario interactúa con la barra de desplazamiento, las vistas del área de texto cambian en consecuencia.

Utilizar el insertar() método para pedirle al usuario que seleccione una categoría y la coloque al final de cualquier texto existente. Utilizar el embalar() método para pedirle al widget de texto que tome el espacio en la dirección X e Y y asigne espacio adicional si es necesario usando el expandir parámetro.

 scroll_y.pack (lado=DERECHO, relleno=Y)
scroll_y.config (comando=self.txtarea.yview)
self.txtarea.insertar (FIN,"Seleccione una categoría:")
self.txtarea.pack (rellenar=AMBOS, expandir=1)

Extraer noticias de la respuesta de la API

Definir una función, Área de noticias() que acepta la instancia actual de la clase y el evento del botón. Pasa la categoría de la noticia que el usuario seleccionó en minúsculas y guárdala. Pase los parámetros requeridos a la URL base y elimine cualquier texto presente anteriormente desde el primer índice hasta el último. Inserte una línea para la demarcación.

Definir un intentar bloquear y enviar una solicitud HTTP GET al servidor definido en la URL base. Convierta la respuesta en formato JSON y extraiga los contenidos que tienen la clave como artículos y almacenarlo en una variable.

definitivamenteÁrea de noticias(yo, evento):
tipo = evento.widget.cget('texto').más bajo()
BASE_URL = F' http://newsapi.org/v2/top-headlines? país=en&categoría={tipo}&apiKey=' + apiKey
self.txtarea.delete("1.0", FIN)
self.txtarea.insertar (FIN, "\norte")
intentar:
artículos = (solicitudes.get (BASE_URL).json())['artículos']

Si el número de artículos obtenidos no es cero, ejecute un ciclo e inserte los artículos uno por uno en el widget de texto. Muestre el título, seguido de la descripción, el contenido y la URL en líneas separadas. Inserte dos líneas para la demarcación. Si el número de artículos es cero, muestra que no hay noticias disponibles para esa categoría en particular.

Si el bloque de prueba falla, use el bloque de excepción para mostrar el mensaje de error apropiado a los usuarios.

si (artículos != 0):
para i en rango (len (artículos)):
self.txtarea.insertar (FIN, F"{artículos[i]['título']}\norte")
self.txtarea.insertar (FIN, F"{artículos[i]['descripción']}\norte")
self.txtarea.insertar (FIN, F"{artículos[i]['contenido']}\norte")
self.txtarea.insertar (FIN, f"leer más...{artículos[i]['url']}\norte")
self.txtarea.insertar (FIN, "\norte")
self.txtarea.insertar (FIN, "\norte")
demás:
self.txtarea.insertar (FIN, "No hay noticias disponibles")
excepto Excepción como mi:
cuadro de mensaje.showerror('ERROR', "Lo sentimos, nos encontramos con algunos problemas. Comprueba la conexión a Internet e inténtalo de nuevo".)

Cree una instancia de la clase e inicialícela. El bucle principal() La función le dice a Python que ejecute el ciclo de eventos de Tkinter y escuche los eventos hasta que cierre la ventana.

raíz = Tk()
obj = aplicación de noticias (raíz)
raíz.mainloop()

Junte todo el código y su aplicación estará lista para mostrar noticias según diferentes categorías.

La salida de la aplicación de noticias

Al ejecutar el programa, el área de texto le pide que seleccione una categoría. Al hacer clic en cualquiera de los botones, muestra la noticia con la descripción, el contenido y su enlace (si está presente) para esa categoría separados por dos líneas.

API útiles para su proyecto de Python

Las API son muy útiles para integrar nuevas aplicaciones con los sistemas de software existentes. Puede usar la API de OpenWeatherMap para recuperar información meteorológica en tiempo real de cualquier área y la API de Google Maps para incorporar mapas en la aplicación de su sitio web. Puede automatizar tareas de GitHub a través de la API de GitHub y usar la API de Zoom para integrar videoconferencias.

También puede usar el poder de ChatGPT desde sus propias aplicaciones usando la API de OpenAI y crear algunas aplicaciones fascinantes impulsadas por IA.