[PYTHON] Comment obtenir les données météorologiques actuelles et les afficher sur l'interface graphique tout en la mettant à jour automatiquement

0. Premier

Si vous souhaitez voir comment fonctionne le produit que vous fabriquez cette fois-ci, veuillez consulter ici (vidéo youtube).

1. Paramètres de l'API OpenWeatherMap

Tout d'abord, accédez à OpenWeatherMap ici. w1.png Ensuite, lorsque vous vous connectez, un écran comme celui-ci sera affiché, alors allez à l'API au-dessus. Polish_20200613_071205710.png Ensuite, pour obtenir les données météorologiques actuelles, appuyez sur S'abonner dans Données météorologiques Currbnt. Polish_20200613_070919098.png Appuyez ensuite sur Get API Key de Free. Polish_20200613_071312064.png Ensuite, vous serez redirigé vers le premier écran, alors appuyez sur les touches API. Polish_20200613_071018224.png Ensuite, vous pouvez voir la clé API obtenue. w6.png

2. Acquisition de données météorologiques

get_weather_data.py


import requests
import json
import schedule

api_key = '8c5752202e9c558f8d76310d5d96ee03'
city_name = 'Tokyo'
url = f'http://api.openweathermap.org/data/2.5/weather?q={city_name}&appid={api_key}&lang=ja'
response = requests.get(url)

def show_data():
    response = requests.get(url)
    data = json.loads(response.text)
    print(data)

#data['weather'][0]['description']

Si vous exécutez show_data (), vous obtiendrez les données Json suivantes. Vous pouvez obtenir le résultat en japonais en ajoutant lang = ja à la fin de l'url.

{'coord': {'lon': 139.69, 'lat': 35.69}, 'weather': [{'id': 500, 'main': 'Rain', 'description': 'pluie légère', 'icon': '10d'}], 'base': 'stations', 'main': {'temp': 293.2, 'feels_like': 294.56, 'temp_min': 292.15, 'temp_max': 294.26, 'pressure': 1008, 'humidity': 93}, 'visibility': 7000, 'wind': {'speed': 2.6, 'deg': 80}, 'rain': {'1h': 0.64}, 'clouds': {'all': 75}, 'dt': 1589781754, 'sys': {'type': 1, 'id': 8077, 'country': 'JP', 'sunrise': 1589744047, 'sunset': 1589794888}, 'timezone': 32400, 'id': 1850144, 'name': 'Tokyo', 'cod': 200}

3. Afficher les paramètres de l'interface graphique

weather.py


import requests
import json
import datetime
import tkinter as tk

class Weather:
    def __init__(self,parent):
        self.api_key = '2d3e148162f779382b38d219e60e028e'
        self.city_name = 'Tokyo'
        self.url = f"http://api.openweathermap.org/data/2.5/weather?q={self.city_name}&appid={self.api_key}&lang=ja"

        self.label = tk.Label(parent,text="weather data")
        self.label2 = tk.Label(parent,text="updated time")
        self.label.pack()
        self.label2.pack()
        self.label.after(60000,self.change_info)
        self.label2.after(60000,self.change_info)


    def show_data(self):
        response = requests.get(self.url)
        data = json.loads(response.text)
        print(data['weather'][0]['description'],datetime.datetime.now())
        return data
    
    def change_info(self):
        time = datetime.datetime.now()
        data = self.show_data()
        var = data['weather'][0]['description']
        self.label.configure(text=var)
        self.label2.configure(text=time) 
        self.label.after(60000,self.change_info)
        self.label2.after(60000,self.change_info)
        

#if __name__ == '__main__':
#    root = tk.Tk()
#    weather = Weather(root)
#    root.mainloop()

run = True
while run:
    try:
        root = tk.Tk()
        weather = Weather(root)
        root.mainloop()
    except KeyboardInterrupt:
        run = False

Encore une fois, je n'ai rien fait de particulièrement difficile. Toutes les minutes, change_info () est appelé pour obtenir les données et mettre à jour l'étiquette de l'interface graphique. Cependant, si vous le faites si vous n'avez pas commenté lorsque vous l'avez terminé, cela se terminera à la prochaine mise à jour, vous devez donc toujours l'améliorer. Si vous savez comment obtenir une bonne finition, faites-le moi savoir. S'il vous plaît.

finalement

Cette méthode est également expliquée dans Youtube, alors jetez un œil si vous l'aimez. Si vous avez des questions, veuillez utiliser la section commentaires de la vidéo ou la section commentaires de cet article. De plus, si vous l'aimez, veuillez vous abonner à la chaîne.

Recommended Posts

Comment obtenir les données météorologiques actuelles et les afficher sur l'interface graphique tout en la mettant à jour automatiquement
Comment retourner les données contenues dans le modèle django au format json et les mapper sur le dépliant
[Mémo personnel] Obtenez des données sur le Web et faites-en un DataFrame
Comment installer Git GUI et Gitk sur CentOS
J'ai essayé d'afficher l'heure et la météo d'aujourd'hui w
[Python / Ruby] Comprendre le code Comment obtenir des données en ligne et les écrire au format CSV
Comment obtenir toutes les clés et valeurs du dictionnaire
[Introduction à Python] Comment obtenir des données avec la fonction listdir
Comment obtenir et définir le nom du serveur NTP par DHCP
Comment installer OpenCV sur Cloud9 et l'exécuter en Python
Affichez l'image de la caméra connectée à l'ordinateur personnel sur l'interface graphique.
Est-il facile de synthétiser un médicament sur le marché?
Comment afficher la résolution PDF et des informations détaillées sur Linux (pdfinfo)
Comment afficher les octets de la même manière en Java et Python
J'ai essayé de pousser les documents Sphinx vers BitBucket et de les refléter automatiquement sur le serveur Web
Mettez à jour les données en les téléchargeant sur s3 d'aws avec une commande, et supprimez les données utilisées (en chemin)
[Python Kivy] Comment obtenir le chemin du fichier par glisser-déposer
[Python] Comment spécifier la position d'affichage de la fenêtre et la taille de matplotlib
Comment diviser et traiter une trame de données à l'aide de la fonction groupby
Comment enregistrer une seule donnée sur l'écran de gestion de Django
Comment afficher la barre de progression (tqdm)
[Rails] Comment calculer la latitude et la longitude avec une grande précision à l'aide de l'API Geocoding et l'afficher sur Google Map
Comment afficher des pictogrammes sur Manjaro Linux
Comment obtenir une sortie colorée sur la console
Comment démarrer le projet Python en 2020 (Windows WSL et Mac commun)
Comment désactiver l'affichage de la valeur d'échelle en quittant la grille avec matplotlib
Comment obtenir la clé sur Amazon S3 avec Boto 3, exemple de mise en œuvre, notes
[Python] Comment nommer les données de table et les sortir avec csv (méthode to_csv)
Je suis accro à la différence dans la façon dont Flask et Django reçoivent les données JSON
J'ai essayé de récupérer les données de l'ordinateur portable en le démarrant sur Ubuntu
Comment installer Fast.ai sur le GPU Alibaba Cloud et l'exécuter sur un ordinateur portable Jupyter
La première étape de l'analyse du journal (comment formater et mettre les données du journal dans Pandas)
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
[Python] Comment changer le format de la date (format d'affichage)
[Django] Comment obtenir des données en spécifiant SQL.
[Python] Comment lire les données de CIFAR-10 et CIFAR-100
Comment obtenir des données d'article à l'aide de l'API Qiita
Comment obtenir les fichiers dans le dossier [Python]
Nettoyage des données Comment gérer les valeurs manquantes et aberrantes
Comment installer le détecteur Cascade et comment l'utiliser
[Rails] Comment afficher plusieurs marqueurs sur Google Map et afficher une bulle lorsque vous cliquez dessus
[Blender] Comment obtenir l'ordre de sélection des sommets, des côtés et des faces d'un objet
J'ai essayé de comprendre comment utiliser les pandas et la colinéarité multiple en utilisant l'ensemble de données Affaires comme thème.
Recevez le dernier rendez-vous de Google Agenda et notifiez-le sur LINE tous les matins
Comment savoir quel processus utilise le port localhost et l'arrêter