Cree una GUI para obtener la hora del atardecer y el amanecer usando Python.

Requisito previo: módulo Tkinter

En este artículo, vamos a escribir secuencias de comandos de Python para obtener la hora de la puesta y la salida del sol y vincularlas con la aplicación GUI. Antes de comenzar, debemos comprender el módulo suntime y geopy

Módulos necesarios:

módulo suntime: este módulo devolverá la biblioteca de python para el cálculo de la hora de la puesta y la salida del sol. Ejecute este comando en su terminal para la instalación.

pip install suntime

módulo geopy: este módulo localiza las coordenadas de direcciones, ciudades, países y puntos de referencia en todo el mundo utilizando geocodificadores de terceros y otras fuentes de datos. Nominatim es un geocodificador que se utiliza para datos de OpenStreetMap. Ejecute este comando en su terminal para la instalación.

pip install geopy

Acercarse:

  • Importe todos los módulos necesarios.
  • Obtenga latitud y longitud con geopy.
  • Obtenga la hora del amanecer con el método Sun(latitude, longitude).get_sunrise_time() .
  • Obtenga la hora del anochecer con el método Sun(latitude, longitude).get_sunset_time() .

A continuación se muestra la implementación:

Python3

# import required modules
import datetime
from suntime import Sun
from geopy.geocoders import Nominatim
 
# Nominatim API to get latitude and longitude
geolocator = Nominatim(user_agent="geoapiExercises")
 
# input place
place = "delhi"
location = geolocator.geocode(place)
 
# latitude and longitude fetch
latitude = location.latitude
longitude = location.longitude
sun = Sun(latitude, longitude)
 
# date in your machine's local time zone
time_zone = datetime.date(2020, 9,13)
sun_rise = sun.get_local_sunrise_time(time_zone)
sun_dusk = sun.get_local_sunset_time(time_zone)
 
# display
print("Sun rise at : ", sun_rise.strftime('%H:%M'))
print("Dusk at : ",sun_dusk.strftime('%H:%M'))

Producción:

Sun rise at :  06:05
Dusk at :  18:28

Enlace con la aplicación GUI

Python3

# import modules
from tkinter import *
from geopy.geocoders import Nominatim
import datetime
from suntime import Sun
 
# user defined function
def sun():
     
    try:
         
        geolocator = Nominatim(user_agent="geoapiExercises")
        
        ladd1 = str(e.get())
        location1 = geolocator.geocode(ladd1)
         
        latitude = location1.latitude
        longitude = location1.longitude
         
        sun = Sun(latitude, longitude)
 
        time_zone = datetime.datetime.now()
         
        sun_rise = sun.get_local_sunrise_time(time_zone)
        sun_dusk = sun.get_local_sunset_time(time_zone)
         
        res_rise = sun_rise.strftime('%H:%M')
        res_dusk = sun_dusk.strftime('%H:%M')
         
        result1.set(res_rise)
        result2.set(res_dusk)
     
    except:
        result1.set("oops! something get wrong")
 
# object of tkinter
# and background set to light grey
master = Tk()
master.configure(bg='light grey')
master.title("Sun")
 
# Variable Classes in tkinter
result1 = StringVar();
result2 = StringVar();
 
 
# Creating label for each information
# name using widget Label
Label(master, text="Enter place : " ,
      bg = "light grey").grid(row=1, sticky=W)
Label(master, text="Sunrise :",
      bg = "light grey").grid(row=3, sticky=W)
Label(master, text="Dusk :",
      bg = "light grey").grid(row=4, sticky=W)
 
# Creating label for class variable
# name using widget Entry
Label(master, text="", textvariable=result1,
      bg = "light grey").grid(row=3,column=1, sticky=W)
Label(master, text="", textvariable=result2,
      bg = "light grey").grid(row=4,column=1, sticky=W)
 
 
e = Entry(master,width = 50)
e.grid(row=1, column=1)
 
 
# creating a button using the widget 
b = Button(master, text="Check",
           command=sun, bg = "white")
b.grid(row=1, column=2,columnspan=2,
       rowspan=2,padx=5, pady=5,)
 
mainloop()

Producción:

Publicación traducida automáticamente

Artículo escrito por kumar_satyam y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *