Python学習の一環として、Tkinterを使って天気アプリ作成しました。
環境:
Window10
Gooble Colaboratory
参考動画:
Pythonアカデミー【エンジニアVtuber凛】
天気情報取得する為、Openweatherから取得しています。
取得方法について今回省略します。
https://openweathermap.org/
tkinterはPYTHONで自由にGUIアプリを作れるというので、Tkinterをベースにインポートします。
import tkinter as tk
お天気API取得する為
import requests
####メインウインド作成
Tkinterでメインウィンドを作る基本記述。
canvas = tk.Tk()
####アプリのサイズを決めている。
canvas.geometry('700x500')
canvas.title('Todays Weather')
# 最高・最低気温を表す文字フォント
a = ('Arial black', 20, 'bold')
# 都市入力・天気の結果を表す文字フォント
b = ('Arial black', 40, 'bold')
お天気情報を得るためのget_weather関数
# 関数名getWeatherで、上で書いたcanvasを入れる
def getWeather(canvas):
city = textField.get()
# openweather情報を取得する。
api = 'https://api.openweathermap.org/data/2.5/weather?q='+city+'&appid= パスワード'
#APIの情報は、JSON形式になるのでJSONデーターを読み込みことになっている。
json_data = requests.get(api).json()
#json形式でapiのweather情報を取得する
weather = json_data['weather'][0]['main']
# 気温なのでINT型で取得、-273.15 気温の表記に合わせるパレメーターになっている。
temp = int(json_data['main']['temp']-273.15)
min_temp = int(json_data['main']['temp_min']-273.15)
max_temp = int(json_data['main']['temp_max']-273.15)
# アプリに表示する項目
final_info = weather + '\n' + str(temp) + '°C'
final_data = '\n' + '最低気温:' + str(min_temp) + '°C'+'\n' + '最高気温:' + str(max_temp)+ '°C'
# テキストデーターとしてfinal_infoに入れた値を入れている。
label1.config(text=final_info)
label2.config(text=final_data)
####テキストボックス作成
# メインウィンド示すcanvas, 文字列が中央揃え、font=bと示すことで、上で書いた文字列を再度書く必要はない。
textField = tk.Entry(canvas, justify='center', width=20, font=b)
#pady=外側の縦の隙間 テキストボックスの余白
textField.pack(pady=30)
#APIの天気情報を返す(表示する) アプリ上で行われるイヴェントを設定することができる。bindメソッドを書いて()の引数にreturn, returnするものはgetWeatherですと示す
textField.bind('<Return>', getWeather)
label1 = tk.Label(canvas, font=b)
label1.pack()
label2 = tk.Label(canvas, font=a)
label2.pack()
####メインウェインドをアプリに配置してmainloopで動作を待機する。
canvas.mainloop()
次回は、お天気アプリをベースにLINEにお天気情報を送信できるアプリを作成しようと思います。