Apprenez à créer votre propre application News avec Python et la bibliothèque Tkinter.

Dans ce monde en évolution rapide, rester à jour avec les dernières nouvelles est crucial. Créez votre propre application d'actualités qui vous donne des nouvelles dans différentes catégories telles que le divertissement, les sports et la technologie accessibles sur n'importe quelle plate-forme à portée de main.

Vous développerez cette application à l'aide de Tkinter, la bibliothèque graphique standard pour Python, et l'alimenterez à l'aide de l'API News qui récupère des articles de plus de 80 000 sources.

Installez tkinter et les modules de requêtes

Tkinter est un module multiplateforme, simple et convivial que vous pouvez utiliser pour créer rapidement des interfaces utilisateur graphiques. Certains les applications que vous pouvez créer à l'aide de Tkinter incluent un lecteur de musique, calendrier, outil de conversion de poids, jeu de mots, etc.

À installer tkinter dans votre système, exécutez la commande suivante dans le terminal :

pip installer tkinter

Le demandes module facilite la création de requêtes HTTP. Avec ça, vous pouvez développer des applications intéressantes telles qu'un vérificateur de statut de site Web, grattoir Web, bot de surveillance du marché boursier et testeur de performances de site Web. Pour installer le module de requêtes, ouvrez le terminal et exécutez la commande suivante :

demandes d'installation pip

Vous pouvez trouver le code source complet de l'application News en utilisant Python dans ce Référentiel GitHub.

Générer la clé API News

Commencez par importer les bibliothèques requises. Inscrivez-vous sur API Actualités et générez votre clé API. Avec le compte développeur gratuit, vous pouvez envoyer jusqu'à 100 demandes par jour, ce qui est idéal pour tester et démarrer. Stockez l'API dans une variable que vous utiliserez plus tard avec l'URL de base pour récupérer les principaux titres en fonction de votre pays.

depuis tkinter importer *
depuis tkinter importer messagerie
importer demandes

apiKey = 'VOTRE_CLÉ_API'

Définir la structure de l'application

Définir une classe, NewsApp. Référencez le clé API et taper variables à l'échelle mondiale. Définissez un objet de la classe et initialisez la fenêtre racine. Définissez les dimensions et le titre de votre application. Définissez deux listes, vous utiliserez la première liste pour définir les boutons et la seconde pour définir les catégories d'actualités que vous souhaitez afficher dans votre application.

classeNewsApp:
mondial Clé API, tapez
définitivement__init__(soi, racine):
self.root = racine
self.root.geometry('1000x650')
self.root.title("Application de nouvelles")
self.newsCategoryButton = []
self.newsCategory = ["général", "divertissement", "des sports", "technologie"]

Définissez une étiquette qui sert de titre à votre application. Transmettez l'élément parent dans lequel vous souhaitez le placer, le texte qu'il doit afficher, le style de police, le rembourrage et la couleur d'arrière-plan qu'il doit avoir. Utilisez le paquet() option de remplissage pour que l'étiquette occupe tout l'espace dans la direction X.

Définir un LabelFrame et définissez son élément parent avec la couleur d'arrière-plan qu'il doit posséder. Utilisez le lieu() fonction pour l'organiser à des coordonnées spécifiées. De plus, transmettez la largeur et la hauteur du cadre.

 titre = étiquette (self.root, text="Application de nouvelles", police=("times new roman", 28, "gras"), paty=2, bg='#ff007f').pack (fill=X)
F1 = LabelFrame (self.root, bg='#fc6c85')
F1.lieu (x=20, y=80, largeur=215, hauteur=210)

Définissez une boucle for qui s'étend sur toute la longueur du actualitéChat liste. Définissez un bouton dans le cadre défini précédemment. Passez le texte qu'il doit afficher et convertissez-le en majuscule. Passez la largeur, la profondeur de la bordure, le style de police et la couleur de fond des boutons. Utilisez le grille gestionnaire pour organiser les boutons dans un format en colonne et ajouter un rembourrage dans les directions X et Y.

Utilisez la méthode bind pour attacher le bouton et la zone d'actualités. définit que le Actualités fonction se produira sur le clic gauche de la souris par l'utilisateur. Ajoutez ces boutons à la newsCatButton liste définie précédemment.

pour je dans gamme (len (self.newsCategory)):
b = Bouton (F1, text=self.newsCategory[i].upper(), width=15, bd=3, police="arial 14 gras", bg='#c154c1')
b.grid (ligne=i, colonne=0, padx=10, paddy=5)
b.bind('', soi. Newsarea)
self.newsCategoryButton.append (b)

Définissez un cadre et transmettez-lui l'élément parent dans lequel vous souhaitez le placer et la profondeur de bordure qu'il doit avoir. Organisez-le aux coordonnées spécifiées et transmettez la hauteur et la largeur relatives. Définissez une barre de défilement verticale à l'aide de la Orient paramètre et placez-le dans ce cadre.

Définissez un widget de texte. Passez l'élément parent en tant que cadre avec le style de police et la couleur d'arrière-plan qu'il doit posséder. Lors du réglage de la valeur du commande yscroll comme scroll_y.set il obtient la position actuelle de la barre de défilement lors de l'interaction de l'utilisateur.

 F2 = Cadre (self.root, bd=3)
F2.lieu (x=260, y=80, rellargeur=0.7, relheight=0.8)
scroll_y = Barre de défilement (F2, orient=VERTICAL)
self.txtarea = Texte (F2, yscrollcommand=scroll_y.set, font=("times new roman", 15, "gras"), bg='#fc6c85')

Utilisez le paquet() option de remplissage pour placer la barre de défilement sur le côté droit du cadre et occuper tout l'espace dans la direction Y. En définissant le paramètre de commande comme txtarea.yview, le mouvement de la barre de défilement est lié aux fonctions haut et bas. Ainsi, lorsque l'utilisateur interagit avec la barre de défilement, les vues de la zone de texte changent en conséquence.

Utilisez le insérer() méthode pour demander à l'utilisateur de sélectionner une catégorie et de la placer à la fin de tout texte existant. Utilisez le paquet() méthode pour demander au widget de texte de prendre l'espace dans la direction X et Y et d'attribuer de l'espace supplémentaire si nécessaire en utilisant la développer paramètre.

 scroll_y.pack (côté=DROITE, remplissage=Y)
scroll_y.config (commande=self.txtarea.yview)
self.txtarea.insert (FIN,"Choisir une catégorie:")
self.txtarea.pack (fill=BOTH, expand=1)

Extraire les nouvelles de la réponse de l'API

Définir une fonction, Newsarea() qui accepte l'instance actuelle de la classe et l'événement de bouton. Passez la catégorie de l'actualité que l'utilisateur a sélectionnée en minuscules et stockez-la. Passez les paramètres requis à l'URL de base et supprimez tout texte présent plus tôt du premier index au dernier. Insérez une ligne de démarcation.

Définir un essayer bloquer et envoyer une requête HTTP GET au serveur défini dans l'URL de base. Convertissez la réponse au format JSON et extrayez le contenu qui a la clé comme des articles et stockez-le dans une variable.

définitivementActualités(soi, événement):
type = événement.widget.cget('texte').inférieur()
BASE_URL = F' http://newsapi.org/v2/top-headlines? pays=dans&catégorie={taper}&apiKey=' + clé API
self.txtarea.delete("1.0", FIN)
self.txtarea.insert (FIN, "\n")
essayer:
articles = (requests.get (BASE_URL).json())['des articles']

Si le nombre d'articles récupérés n'est pas nul, exécutez une boucle et insérez les articles un par un dans le widget texte. Affichez le titre, suivi de la description, du contenu et de l'URL sur des lignes distinctes. Insérez deux lignes pour la démarcation. Si le nombre d'articles est nul, affiche qu'aucune actualité n'est disponible pour cette catégorie particulière.

Si le bloc try échoue, utilisez le bloc exception pour afficher le message d'erreur approprié aux utilisateurs.

si (article != 0):
pour je dans gamme (len (articles)):
self.txtarea.insert (FIN, F"{articles[i]['titre']}\n")
self.txtarea.insert (FIN, F"{articles[i]['description']}\n")
self.txtarea.insert (FIN, F"{articles[i]['contenu']}\n")
self.txtarea.insert (FIN, f"lire la suite...{articles[i]['URL']}\n")
self.txtarea.insert (FIN, "\n")
self.txtarea.insert (FIN, "\n")
autre:
self.txtarea.insert (FIN, "Aucune nouvelle disponible")
sauf Exception comme e :
messagebox.showerror('ERREUR', "Désolé, nous avons rencontré quelques problèmes. Veuillez vérifier la connexion Internet et réessayer.")

Créez une instance de la classe et initialisez-la. Le boucle principale() La fonction indique à Python d'exécuter la boucle d'événements Tkinter et d'écouter les événements jusqu'à ce que vous fermiez la fenêtre.

racine = Tk()
obj = NewsApp (racine)
root.mainloop()

Rassemblez tout le code et votre application est prête à afficher les actualités selon différentes catégories.

La sortie de l'application News

Lors de l'exécution du programme, la zone de texte demande de sélectionner une catégorie. En cliquant sur l'un des boutons, il affiche les nouvelles avec la description, le contenu et son lien (le cas échéant) pour cette catégorie séparés par deux lignes.

API utiles pour votre projet Python

Les API sont très pratiques pour intégrer de nouvelles applications aux systèmes logiciels existants. Vous pouvez utiliser l'API OpenWeatherMap pour récupérer des informations météorologiques en temps réel sur n'importe quelle zone et l'API Google Maps pour incorporer des cartes dans votre application de site Web. Vous pouvez automatiser les tâches GitHub via l'API GitHub et utiliser l'API Zoom pour intégrer la visioconférence.

Vous pouvez également utiliser la puissance de ChatGPT depuis vos propres applications à l'aide de l'API d'OpenAI et créer des applications fascinantes alimentées par l'IA.