from math import*
from tkinter import*
choix=1
def k1(w):
#    return (w/2-1)# Vgroupe<Vphase
    return (w/3+0.4)# Vgroupe>Vphase
def k2(w):
#    return (w/3)# Vgroupe=Vphase
#    return (w/3+0.3)# Vgroupe>Vphase
    return (w/2.5-0.8)# Vgroupe<Vphase
def g(x,t):
    return cos(k2(w)*x-w*t)
def E3(x,t,a,b):
    S,w,N=0,a,100
    dw=(b-a)/N
    while w<b:
        S+=100*cos(k2(w)*x-w*t)*dw
        w+=dw
    return S
def fonction1():
    global choix
    choix=1
def fonction2():
    global choix
    choix=0
def f(x,t):
#    K,W=1,1
    if choix>0:# Doublet spectral [w1,w2]
        w0,dw=5,0.3
        w1=w0-dw
        w2=w0+dw
        E1=cos(k1(w1)*x-w1*t)
        E2=cos(k1(w2)*x-w2*t)
        return 50*(E1+E2)
    else:# Spectre continu
        w0,dw=5,1
        return(E3(x,t,w0,w0+dw))
def liste(t,f):
    L=(0,100-f(0,t))
    for x in range(1,60):
        L+=(10*x,100-f(x,t))
    return L
t=0
flag=0
def avance():
    global liste,t
    can.delete(ALL)
    t+=1
    can.create_line(liste(t,f),width=2,smooth=True,fill='red')
def move():
    global liste,t
    can.delete(ALL)
    t+=0.1
    can.create_line(liste(t,f),width=2,smooth=True,fill='red')
    if flag>0:
        fen.after(50,move)
def arret():
    global flag
    flag=0
def demarre():
    global flag
    if flag==0:
        flag=1
        move()
fen=Tk()
can=Canvas(fen,height=200,width=600,bg='dark grey')
bou=Button(fen,text='avance',command=avance)
bou2=Button(fen,text='arret',command=arret)
bou3=Button(fen,text='démarre',command=demarre)
#can.pack()
#bou.pack()
#bou2.pack()
#bou3.pack()
can.grid(row=1,column=0,columnspan=3,padx=10,pady=10)
Label(fen,text='Choisir la fonction').grid(row=2,column=0)
sinus=Button(fen,text='doublet spectral',command=fonction1)
expo=Button(fen,text='spectre continu',command=fonction2)
bou.grid(row=0,column=0)
bou2.grid(row=0,column=1)
bou3.grid(row=0,column=2)
sinus.grid(row=3,column=0,sticky=W)
expo.grid(row=3,column=1)
fen.mainloop()