Ringrazio per le sue preziose indicazioni.
Io sono un  autodidatta che ha iniziato a programmare con il Basic dello Spectrum  passando poi per il Clipper Pascal e VB6 poi Vbscript, Javascript (Java,C,C++c# di striscio) e infine Python
Non utilizzo la programmazione ad oggetti perché  mi è ostica, non ho gli studi appropriati  e anche perché la programmazione non è un lavoro per me, ma un graditissimo passatempo.
Grazie per la disponibilità
Questa è roba fatta da me  non copiata . Mi perdonerà l'ingenuità della programmazione
p.s. ho iniziato ad usare  Python con la pandemia 
##############################################
#             CACOLO DEL JULIAN DAY                           #
#                   e vicecersa                                        #
# Formula di Meeus                                                #
#############################################
'''
APERTURA DELLE LIBRERIE
'''
from   tkinter import *
import tkinter as tk
from   tkinter import ttk
import shutil
import datetime  
from datetime import date
import time
import os
import sys
from   tkinter import messagebox
import tkinter.simpledialog as simpledialog
from tkinter.simpledialog import askstring
from tkinter.messagebox import showinfo
###################################################
wd = os.getcwd()         # Percorso di dove mi trovo
pro ="JylianDay.py"
proc = "\\"+pro
PathAll = wd + proc      # Percorso + Nome programma
#####-------- Creo una Cartella  MyTest --------
Cartella = wd +"\\MyTest"
if not os.path.exists(Cartella):
       os.makedirs(Cartella)
##--------- Definisco Le variabili Globali
gio = 0
mes = 0
ann = 0
jdy = 0
hho = 0
mmo = 0
sso = 0
shho = ""
smmo = ""
so = ""
GioH = 0
sgio = ""
smes = ""
sann = ""
giomax = 28
giosett = ""   #"Sabato"
bize =""
bise = False
data = ""
ora  = ""
spaz = " "
Jdy = 0
titolasso =""
global Mega
Mega = []
days = []
days = ["Domenica   ","Lunedi'   ","Martedi'   ","Mercoledi'   ","Giovedi'   ","Venerdi'   ","Sabato   "]
##############   ZONA FUNZIONI   #########################
#----------------------------------------------------------------------------------------------------------
def cmdJulian():     # pulsante 
       
       #########################  Splitto l'Ora
       varora = txtOra.get()
       #if len(varora)==0:
       #       return
       if varora == "0" or len(varora) == 0:
              varora = "00.00.00"
       if len(varora) < 8:
              messagebox.showwarning(title="Errore", message="Formato Orario hh.mm.ss")
              return
       puntiOra = varora.count(".")
       if puntiOra==2:
              varora = varora.replace(".",":") #Formato Orario
              varora = varora.replace(",",".") # eventuali decimali 
      #########################  C.llo e Splitto la Data
       vardata = txtData.get()
       # i due campi sono vuoti
       if len(vardata) == 0:
              messagebox.showwarning(title="Errore", message="Inserisci sempre la Data gg/mm/aaa")              
              return
       ArData = vardata.split("/")
       sla = vardata.count("/")
       if sla >2 or sla <2:
              messagebox.showwarning(title="Errore", message="Errore!!! Correggi l'Input della Data")
              return
       #-------- Stringhe  Data   
       sgio = ArData[0]   # Giorno
       smes = ArData[1]   # mese 
       sann = ArData[2]   # anno
       #-------- Valori   Data
       gio = int(sgio)
       mes = int(smes)
       if mes >12:
              messagebox.showwarning(title="Errore", message="Errore nell'inserimento del Mese")
              return
       ann = int(sann)
       if ann >= 9999:
              messagebox.showwarning(title="Errore", message="Errore nell'inserimento dell'Anno")
              return
       bize =""
       bise = False
       bise = Bisestile(ann)  # Anno esatto
       if bise == True:
              bize = "[Bisestile]"
       #--------------------------------
       giomax= GioMax(mes,bise)
       if gio > giomax or gio >31:
              messagebox.showwarning(title="Errore", message="Errore nell'inserimento del Giorno")
              return
       ArOra  = varora.split(":")
       #-------- Stringhe Ora
       shho = ArOra[0]
       smmo = ArOra[1]
       ssso = ArOra[2]
       #-------- Valori Ora
       hho = int(shho)    # Ora
       if hho >24:
              messagebox.showwarning(title="Errore", message="Errore!!!\n\n Inserire un Orario  <= 23.59.59")
              return
       mmo = int(smmo)    # minuti
       sso = float(ssso)  # secondi
       print("sso  : ",sso)
 #------------------------------------- controllo ora
       if int(sso) >= 60:
              sso -=60
              mmo +=1
              logi = True
              if sso == 60:
                     sso = (sso - 60)
       if mmo >= 60:
              mmo -=60
              hho +=1
              logi = True
              if mmo == 60:
                     mmo = (mmo-60)
       if hho >= 24:
              hho -=24
              gio +=1
              if gio > giomax:
                     gio = gio-giomax
                     mes+=1
              if mes > 12:
                     mes = mes-12
                     ann+=1
                     
       Secondi = ((hho*3600) + (mmo*60) + sso)
       if Secondi >= 86400:
              Secondi -=86400
              s1 = Secondi/3600
              hho = int(s1)
              s2  = s1-sso
              s3 = s2*60
              mmo = int(s3)
              s4 = s3-mmo
              sso = s4*60
              gio +=1
  
       oH   = OreGiorno(hho,mmo,sso)
       GioH = float(oH /86400)
       #Ricostruzione Data e Ora
       Dda = str(gio)+"/"+str(mes)+"/"+str(ann)
       seco = str(int(sso))
       Oor = zero(str(hho))+":"+zero(str(mmo))+":"+zero(seco)
       # Metto i nuovi valori nelle Entry di input
       Gdata.set(Dda)
       Gora.set(Oor)
 
####  Preparo il valore giorno per il calcolo del gilian day
       xgio = gio + GioH      
       Jdy = float(JulianDay(xgio,mes,ann))
       jdm = Jdy +1.5
       xg  = int(jdm % 7)
       # Giorno della settimana 
       giosett = str(days[xg]).strip()
       jday.set(Jdy)
       Mega.clear()    # Svuota la Lista
       Mega.append("Da Gregorian Day a Julian Day")
       Mega.append(Dda)
       Mega.append(Oor)
       Mega.append(Jdy)
       Mega.append(giosett)
       Mega.append(False)
 
       lbl2 = Label(text= "          ",font=("Courier 10 italic bold "))
       lbl2 = Label(text= giosett ,font=("Courier 10 italic bold "))
       lbl2.place(x=130, y=160)
       
       return
#--------------------------------------------------------------
def GioMax(mes,bi):
       switcher = {
              1: 31,
              2: 28,
              3: 31,
              4: 30,
              5: 31,
              6: 30,
              7: 31,
              8: 31,
              9: 30,
              10: 31,
              11: 30,
              12: 31,}
    
       gmes = switcher.get(mes, "Invalid month")
       if mes ==2 and bi==True:
              gmes = 29
       return gmes
#--------------------------------------Calcolo Ore in secondi
def OreGiorno(hho,mmo,sso):
    hhh = (((hho * 60)+mmo)*60) +sso
    return hhh
#--------------------------------------Calcolo Gulian day
def JulianDay(xgio,mes,ann):
       a=0
       b=0
       d = xgio
       ms = mes
       xms = mes
       Y = ann
       xan = ann
       if(xms == 1 or xms == 2):
              xan -=1
              xms +=12
      	   
       dd = int(xgio)
       if(xan > 1852):
              a = int(xan/100)
              b = 2 - a + int(a/4)
              if(xan < 1852):
                     b = 0                     
       VA0 = float(4716.00)
       z = xan +VA0
       J = xms +1
       VA1 = float(365.25)
       VA2 = float(30.6001)
       ii  = int(VA1 * z)
       jj  = int(VA2 * J)
       VA3 = float(1524.5)
       vv  = float(d + b - VA3)
       pio = float(ii + jj + vv)
       Somma = float(pio)
       txtData.focus_set()
       return Somma
#---------------------------------------------------------------------
def cmdGregorian():   # Pulsante Gog
       
       jd = jday.get()  # legge il Campo Entry
       print(jd)
       if len(jd) == 0:
              return
       
       JdToDg = DataGreg(jd)
       print(JdToDg)
       dhg = JdToDg.split("x")
       
       LaData = dhg[0]
       LaOra  = ControlloOra(dhg[1])
       ilGio  = dhg[2]
   
       Gdata.set(LaData)
       Gora.set(LaOra)
       Mega.clear()
       Mega.append("Da Julian Day a Gregorian Day")
       Mega.append(jd)
       Mega.append(LaData)
       Mega.append(LaOra)
       Mega.append(ilGio)
       Mega.append(True)
       
       lbl2 = Label(text= "          ",font=("Courier 10 italic bold "))
       lbl2 = Label(text= ilGio ,font=("Courier 10 italic bold "))
       lbl2.place(x=130, y=160)
       # se una cifra, anreporre 0 / Togliere i decimali
       # vedo se ci sono decimali
       return
#--------------------------
def ControlloOra(H):
       oraDec = H.split(".")
       oraInt = oraDec[0]
       hms =oraInt.split(":")
       oo = ""
       for i in hms:
              i=i.strip()
              if len(i) == 1:
                     i =zero(i)+":"
              else:
                     i = i+":"
              oo = oo+i       
       oo = oo[:-1]
       return oo
#--------------------------
def zero(x):
       if len(x)==1:
              return('0' +x)
       return x
#------------   1721058   01/01/000  12:00:00   Giovedì
def DataGreg(jj):
       jj = float(jj)
       z = 0
       F = 0
       a = 0
       B = 0
       C = 0
       d = 0
       e = 0
       alfa = 0
       mm1 = 0
       yy1 = 0
       va1 =  1867216.25
       va2 =  36524.25
       va3 =  1524
       va4 =  122.1
       va5 =  365.25
       va6 =  30.6001
       va7 =  4716
       va8 =  4715
       Konstz = 2299161
       J1 = float(jj  + 0.5)
       z = int(J1)
       F = float(J1 - int(J1))
       
       if z < Konstz:
          a = z
       if z >= Konstz:
              alfa = int((z - va1) / va2)
              a = z + 1 + alfa - int(alfa / 4)
       B = (a + va3)
       C = int((B - va4) / va5)
       d = int(va5 * C)  
       e = int((B - d) / va6)
       Dd1 = (B - d - int(va6 * e) + F)
       
       #**** Mese
       if e < 14:
              mm1 = (e - 1)
       if e == 14 or e == 15:
              mm1 = (e - 13)
 
       #**** Anno
       if mm1 > 2:
              yy1 = (C - va7)
       if mm1 == 1 or mm1 == 2:
              yy1 = (C - va8)
       # Creo la Stringa della Data
       DDD = str(int(Dd1)) + "/" + str(mm1) + "/" + str(yy1)
       ###-----------------------------------------------------
       bize =""
       bise = False
       bise = Bisestile(int(Dd1))  # Anno  Bisestile?
       bize = "[Bisestile]"
       jdm = jj +1.5
       xg  = int(jdm % 7)
       giosett = days[xg]  # Giorno della settimana letto dall'Array days[]
       # Calcolo dell'Orario con i secondi decimali
       HO = Dd1 - int(Dd1)
       h = HO * 24
       Hora = int(h)
       mi = h - int(h)
       mi = mi * 60
       mii = int(mi)
       se = mi - int(mi)
       se = se * 60
       Sec = float(se)
           
       #Orario = str(Hora) + ":" + str(mii) + ":" + str(Sec)[0:6]  #limito a tre decimali
       Orario = str(Hora) + ":" + str(mii) + ":" + str(round(Sec,4))  #limito a tre decimali
       return DDD + "x" + Orario + "x" + giosett
#---------------------------------------BISESTILE
def Bisestile(yea):
    ve = False
    if yea %4 == 0:
        ve = ((yea % 100)>0 or ((yea % 400) == 0))
    else:
        ve = False
    return ve      
#---------------------------------------USCITA
def cmdEsco():
     os._exit(0)
###---------------- PULIZIA DEI CAMPI ------------
def cmdClear():
    txtData.delete(0,END)
    txtOra.delete(0,END)
    txtJd.delete(0,END)
    lbl2 = Label(text= 20*"  " ,font=("Courier 10 italic bold "))
    lbl2.place(x=130, y=160)
    txtData.focus_set()
    lbl3 = Label(text= "          " ,font=("Courier 7  bold "))
    lbl3.place(x=130, y=180)
    Mega.clear()
    txtData.focus_set()
##------------------------------------------------------------------------
def cmdReport():
       titolo = ""
       rep    = ""
       if Mega[5] == True:
              rep = rep+Mega[0]+"\n\nJulian  Day\t = "+Mega[1]+"\nData\t\t = "
              rep = rep+Mega[2]+"\nOra\t\t = "+Mega[3]+"\nGiorno\t\t = "+Mega[4]
              messagebox.showinfo("Data Giuliana",rep)
       if Mega[5] == False:
              rep = rep+Mega[0]+"\n\nData\t\t = "+Mega[1]+"\nOra\t\t = "+Mega[2]
              rep = rep+"\nGiorno\t\t = "+Mega[4]+"\nJulian Day\t = "+str((Mega[3]))
              messagebox.showinfo("Data Giuliana",rep)
       return
#----------------------------------------------------------------------
##############    ZONA WINDOW    #########################
#inizializziamo globalmente la finestra
window = Tk()
#dimensioni Finestra
WIDTH = 400   #larghezza
HEIGHT = 200  #Altezza
###-------------------  CENTRO FINESTRA SU SHERMO  ---------------------
larghezza = window.winfo_screenwidth()    # larghezza schermo in pixel
altezza = window.winfo_screenheight()     # altezza schermo in pixel
x = larghezza//2 - WIDTH//2
y = altezza//2 - HEIGHT//2
window.geometry("%dx%d+%d+%d" % (WIDTH, HEIGHT, x, y))
window.title("Calcolo del Julian Day   By GSan 02/2021   Python 3.9 64 Bit")
#window.resizable(False, False)      # non modificabile e no ingrandisce
#window.resizable(0,0)              # non modificabile e no ingrandisce
#window.overrideredirect(1)         # non spostabile e senza i controlli
window.attributes("-topmost", True) # sempre in primo piano
#---------------------------------------------------------------------------
### ----------------  Creo un riquadro Frame chiamato "gruppo"
gruppo = LabelFrame(window, text="Gregorian Day",fg='navy',font=("Arial 10 bold"), padx=5, pady=5, width=300)
gruppo.grid(row=0, sticky='W', padx=55, pady=5, ipadx=5, ipady=5)
# Il Frame si allunga mano a mano che inserisco oggetti
gru = LabelFrame(window, text="Julian Day",fg='navy',font=("Arial 10 bold"), padx=5, pady=5, width=300)
gru.grid(row=1, sticky='W', padx=55, pady=5, ipadx=5, ipady=5)
#Label e Campo Entry
Gdata = StringVar()
Gora  = StringVar()
jday = StringVar()
#Mega=[]
Label(gru, text="J.Day : ",font=("Arial 10 bold italic")).grid(row=0, sticky=W)
txtJd = Entry(gru, textvariable=jday, bg="azure",font=("Arial 10 bold "), width=18)
txtJd.grid(row=0, column=1, sticky=W)
txtJd.focus_set()
Label(gruppo, text="Data : ",font=("Arial 10 bold italic")).grid(row=0, sticky=W)
Label(gruppo, text=" gg/mm/aaa ",font=("Arial 8 italic")).grid(row=0,column=2, sticky=W)
txtData = Entry(gruppo, textvariable=Gdata, bg="azure",font=("Arial 10 bold "), width=12)
txtData.grid(row=0, column=1, sticky=W)
txtData.focus_set()
Label(gruppo, text="Ora  : ",font=("Arial 10 bold italic")).grid(row=1, sticky=W)
Label(gruppo, text=" hh:mm:ss          ",font=("Arial 8 italic")).grid(row=1,column=2, sticky=W)
txtOra = Entry(gruppo, textvariable=Gora, bg="azure",font=("Arial 10 bold "), width=12)
txtOra.grid(row=1, column=1, sticky=W)
# Pulsanti Invio  e Chiusura
###---  Pulsante di Calcolo   del Julian Day---------------------------
cmdEnter = Button(gruppo, text='J d y',fg='navy',bg='lightgray',font=("Arial 7 italic "),cursor ="hand2", command=cmdJulian)
cmdEnter.grid(row=1,column=4, sticky=W)   #.place(x=260, y=60)
###---  Pulsante di Calcolo del Gregorian Day---------------------------
Label(gru, text="        ",font=("Arial 10 bold italic")).grid(row=0,column= 4, sticky=W)
cmdEnteg = Button(gru, text='G r g',fg='navy',bg='lightgrey',font=("Arial 7 italic "),cursor ="hand2", command=cmdGregorian)
cmdEnteg.grid(row=0,column=5, sticky=W)   #.place(x=260, y=60)
#------ PULISCE CAMPI
cmdPuli = Button(window, text='C L E A R',fg='navy',bg='lime',font=("Arial 6"),cursor ="hand2", command=cmdClear)
cmdPuli.place(x=215, y=89)
#------ Crea Report
cmdPuli = Button(window, text='R E P O R T',fg='white',bg='dimgrey',font=("Arial 6"),cursor ="hand2", command=cmdReport)
cmdPuli.place(x=140, y=89)
###---  Pulsante Uscita Programma  ----------------------
cmdEsci  = Button(window, text='E X I T',bg='orange',font=("Arial 6"),cursor ="hand2", command=cmdEsco)
cmdEsci.place(x=280,y=89)#315 160
#cmdEsci.place(x=268,y=180)
if __name__ == "__main__":
    window.mainloop()