Advertisement
furas

Python - Weather API + Tkinter

Jun 8th, 2018 (edited)
500
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.62 KB | None | 0 0
  1. # author: Bartlomiej "furas" Burek (https://blog.furas.pl)
  2. # 2018.06.08
  3.  
  4. import requests
  5. import tkinter as tk
  6.  
  7. #list of the prefecture
  8.  
  9. data = [ # name, city_code, column, row
  10.     ("Hokkaido", "016010", 0, 0),
  11.     ("Aomori", "020010", 1, 0),
  12.     ("Iwate", "030010", 1, 1),
  13.     ("Miyagi", "040010", 1, 2),
  14.     ("Akita", "050010", 1, 3),
  15.     ("Yamagata", "060010", 1, 4),
  16.     ("Fukushima", "070010", 1, 5),
  17.     ("Ibaraki", "080010", 2, 0),
  18.     ("Tochigi", "090010", 2, 1),
  19.     ("Gunma", "100010", 2, 2),
  20.     ("Saitama", "110010", 2, 3),
  21.     ("Chiba", "120010", 2, 4),
  22.     ("Tokyo", "130010", 2, 5),
  23.     ("Kanagawa", "140010", 2, 6),
  24.     ("Niigata", "150010", 3, 0),
  25.     ("Toyama", "160010", 3, 1),
  26.     ("Ishikawa", "170010", 3, 2),
  27.     ("Fukui", "180010", 3, 3),
  28.     ("Yamanashi", "190010", 3, 4),
  29.     ("Nagano", "200010", 3, 5),
  30.     ("Gifu", "210010", 3, 6),
  31.     ("Shizuoka", "220010", 3, 7),
  32.     ("Aichi", "230010", 3, 8),
  33.     ("Mie", "240010", 4, 0),
  34.     ("Shiga", "250010", 4, 1),
  35.     ("Kyoto", "260010", 4, 2),
  36.     ("Osaka", "270010", 4, 3),
  37.     ("Hyogo", "280010", 4, 4),
  38.     ("Nara", "290010", 4, 5),
  39.     ("Wakayama", "300010", 4, 6),
  40.     ("Tototri", "310010", 5, 0),
  41.     ("Shimane", "320010", 5, 1),
  42.     ("Okayama", "330010", 5, 2),
  43.     ("Hiroshima", "340010", 5, 3),
  44.     ("Yamaguchi", "350010", 5, 4),
  45.     ("Tokushima", "360010", 6, 0),
  46.     ("Kagawa", "370010", 6, 1),
  47.     ("Ehime", "380010", 6, 2),
  48.     ("Kochi", "390010", 6, 3),
  49.     ("Fukuoka", "400010", 7, 0),
  50.     ("Saga", "410010", 7, 1),
  51.     ("Nagasaki", "420010", 7, 2),
  52.     ("Kumamoto", "430010", 7, 3),
  53.     ("Oita", "440010", 7, 4),
  54.     ("Miyazaki", "450010", 7, 5),
  55.     ("Kagoshima", "460010", 7, 6),
  56.     ("Okinawa", "471010", 8, 0),
  57. ]
  58.  
  59. # function of button / display each weather
  60.  
  61. def push(city_code):
  62.     weather_data = requests.get(api_url, params={'city': city}).json() #get city name
  63.     for i in weather_data["forecasts"]:
  64.         print(i["dateLabel"] + "の天気は、" + i["telop"])
  65.     print("\n")    
  66.  
  67. # commnd exit application
  68.  
  69. def exit():
  70.     base.destroy()    
  71.  
  72. # --- main ---
  73.  
  74. api_url = "http://weather.livedoor.com/forecast/webservice/json/v1"
  75.  
  76. base = tk.Tk()
  77. base.title("Japan Weather") #title
  78. w = 10 #width of cell and col
  79.  
  80. # display menu_bar
  81.  
  82. menu_bar = tk.Menu(base)
  83. file_menu = tk.Menu(menu_bar)
  84. menu_bar.add_cascade(label="File", menu=file_menu)
  85. file_menu.add_command(label = "Exit", command=exit)
  86. base.config(menu=menu_bar)
  87.  
  88. # display button
  89.  
  90. for name, city, c, r in data:
  91.     b = tk.Button(base, text=name, command=(lambda x= city:push(x)))
  92.     b.grid(column=c, row=r, sticky='we')
  93.  
  94. base.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement