Wenn Sie sehen möchten, wie die Dinge, die Sie dieses Mal machen, funktionieren, lesen Sie bitte hier (Youtube-Video).
Greifen Sie zuerst auf die OpenWeatherMap [hier] zu (https://openweathermap.org/). Wenn Sie sich dann anmelden, wird ein Bildschirm wie dieser angezeigt. Gehen Sie also zur API darüber. Um die aktuellen Wetterdaten abzurufen, drücken Sie Abonnieren in Aktuelle Wetterdaten. Drücken Sie dann Free's Get API Key. Dann gelangen Sie zum ersten Bildschirm. Drücken Sie also die API-Tasten. Dann können Sie den erhaltenen API-Schlüssel sehen.
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']
Wenn Sie show_data () ausführen, erhalten Sie die folgenden Json-Daten. Sie können das Ergebnis auf Japanisch erhalten, indem Sie am Ende der URL lang = ja hinzufügen.
{'coord': {'lon': 139.69, 'lat': 35.69}, 'weather': [{'id': 500, 'main': 'Rain', 'description': 'leichter Regen', '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': 'Tokio', '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
Auch hier habe ich nichts besonders Schwieriges getan. Jede Minute wird change_info () aufgerufen, um die Daten abzurufen und das GUI-Label zu aktualisieren. Wenn Sie dies jedoch tun, wenn Sie es nach Abschluss nicht auskommentiert haben, endet es beim nächsten Update, sodass Sie es noch verbessern müssen. Wenn Sie wissen, wie Sie ein gutes Finish erzielen, lassen Sie es mich bitte wissen. Bitte.
Diese Methode wird auch in Youtube erklärt. Schauen Sie also bitte nach, wenn es Ihnen gefällt. Wenn Sie Fragen haben, verwenden Sie bitte den Kommentarbereich des Videos oder den Kommentarbereich dieses Artikels. Wenn es Ihnen gefällt, abonnieren Sie den Kanal.