Si vous souhaitez voir comment fonctionne le produit que vous fabriquez cette fois-ci, veuillez consulter ici (vidéo youtube).
Tout d'abord, accédez à OpenWeatherMap ici. Ensuite, lorsque vous vous connectez, un écran comme celui-ci sera affiché, alors allez à l'API au-dessus. Ensuite, pour obtenir les données météorologiques actuelles, appuyez sur S'abonner dans Données météorologiques Currbnt. Appuyez ensuite sur Get API Key de Free. Ensuite, vous serez redirigé vers le premier écran, alors appuyez sur les touches API. Ensuite, vous pouvez voir la clé API obtenue.
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}
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.
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