Este código está disponible en # Comparte Código. Ver sin formato

  1. #! /usr/bin/env python3
  2.  
  3. import PySimpleGUI as sg
  4.  
  5. # Esta función hace la conversión de grados azimutales a rumbos.
  6. def azimutal_rumbo(azimutal):
  7.     # Rumbos Francos
  8.     if (azimutal == 0) or (azimutal == 360):
  9.         rumbo = 'N'
  10.     elif azimutal == 90:
  11.         rumbo = 'E'
  12.     elif azimutal == 180:
  13.         rumbo = 'S'
  14.     elif azimutal == 270:
  15.         rumbo = 'W'
  16.     #Identificar los cuadrantes.
  17.     #Cuadrante I
  18.     elif (azimutal > 0) and (azimutal < 90):
  19.         rumbo = 'N ' + str(azimutal)  +'º E'
  20.     #Cuadrante II
  21.     elif (azimutal > 90) and (azimutal < 180):
  22.         rumbo = 'S ' + str(180 - azimutal) + 'º E'
  23.     #Cuadrante III
  24.     elif (azimutal > 180) and (azimutal < 270):
  25.         rumbo = 'S ' + str(azimutal - 180) + 'º W'
  26.     #Cuadrante IV
  27.     elif (azimutal > 270) and (azimutal < 360):
  28.         rumbo = 'N ' + str(360 - azimutal) + 'º W'
  29.     else:
  30.         rumbo = 'Valor Incorrecto'
  31.  
  32.     return rumbo
  33.  
  34.  
  35. # Construir la interfaz gráfica.
  36. sg.theme('SystemDefault')
  37. layout = [
  38.     [sg.Text('Teclear el rumbo azimutal [0-360º]:',font='Default 12')],
  39.     [sg.InputText(key='-GRADOSAZ-', size=(10,1), font='Default 12')],
  40.     [sg.Button('Convertir', font='Default 12')],
  41.     [sg.Text(size=(20,1), font='Default 18 bold', key='-RUMBO-')]]
  42.  
  43. window = sg.Window('Azimutales a Rumbos').Layout(layout)
  44.  
  45. while True:                             # The Event Loop
  46.     event, values = window.read()
  47.     # print(event, values)
  48.     if event in (None, 'Exit'):
  49.         break
  50.     if event == 'Convertir':
  51.         # Update the "output" text element to be the value of "input" element
  52.         resultado = azimutal_rumbo(int(values['-GRADOSAZ-']))
  53.         window['-RUMBO-'].update(resultado)
  54.  
  55. window.close()