2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

お天気アプリ

Posted at

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にお天気情報を送信できるアプリを作成しようと思います。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?