In [ ]:
#Librerias necesarias para ejecutar el cdigo
import numpy as num
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plot
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.backend_bases import key_press_handler
import scipy.constants as sc
import matplotlib.patches as mpatches

import sys
if sys.version_info[0] < 3:
    import Tkinter as Tk
else:
    import tkinter as Tk

home = Tk.Tk()
home.wm_title("Banda prohibida de los semiconductores")
#Declaracion de limites    
f = Figure()
plota = f.add_subplot(111)
#Declaracion de Variables
a = num.arange(0.1, 1000, 0.1)#Temperatura
#Definicion de las funciones
b=3.470-((7.70*10**(-4))*a**2/(a+600))  #GaN
c=2.340-((6.20*10**(-4))*a**2/(a+460)) #GaP
d=1.519-((5.41*10**(-4))*a**2/(a+204)) #GaAS
e=1.425-((4.50*10**(-4))*a**2/(a+327)) #InP
g=1.170-((4.73*10**(-4))*a**2/(a+636)) #Si
h=0.744-((4.77*10**(-4))*a**2/(a+235)) #Ge

#Se les asigna el label correspondiente a cada eje
plota.plot(a,b,color='y',label='GaN')
plota.plot(a,c,color='b',label='GaP')
plota.plot(a,d,color='g',label='GaAS')
plota.plot(a,e,color='black',label='InP')
plota.plot(a,g,color='r',label='Si')
plota.plot(a,h,color='cyan',label='Ge')
plota.set_xlabel('Temperatura (Kelvin)')
plota.set_ylabel('Eg(eV)',rotation='horizontal')
plota.axis([200, 1000,0.5,3.5])
plota.legend(loc=1)
# Muestra la grafica-------------------------------------------------
plota.set_title('Banda prohibida de los semiconductores')
f.tight_layout()
plota.grid(True)

canvas = FigureCanvasTkAgg(f,master=home)
canvas.show()
canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)

toolbar = NavigationToolbar2TkAgg(canvas, home)
toolbar.update()
canvas._tkcanvas.pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
#Proceso de seleccion del teclado
R = "right"
L = "left"
U = "up"
D = "down"
x = 300
state=0
var = Tk.StringVar()
label = Tk.Label(home, textvariable=var, fg="black", bg="white",  font = "Helvetica 14 bold italic")
var.set("Utilice las flechas horizontales del teclado para desplazarce por la grafica")
def graficar(x):
        if state==5:
            y=0.744-((4.77*10**(-4))*x**2/(x+235)) #Ge
        elif state==4:
            y=1.170-((4.73*10**(-4))*x**2/(x+636)) #Si
        elif state==3:
            y=1.425-((4.50*10**(-4))*x**2/(x+327)) #InP
        elif state==2:
            y=1.519-((5.41*10**(-4))*x**2/(x+204)) #GaAS
        elif state==1:
            y=2.340-((6.2*10**(-4))*x**2/(x+460))  #GaP
        else:
            y=3.470-((7.7*10**(-4))*x**2/(x+600))  #GaN
        n = num.linspace(x,x,2)
        plota.cla()
        plota.plot(a,b,color='y',label='GaN')
        plota.plot(a,c,color='b',label='GaP')
        plota.plot(a,d,color='g',label='GaAS')
        plota.plot(a,e,color='black',label='InP')
        plota.plot(a,g,color='r',label='Si')
        plota.plot(a,h,color='cyan',label='Ge')
        plota.set_xlabel('Temperatura (Kelvin)')
        plota.set_ylabel('Eg(eV)',rotation='horizontal')
        plota.axis([200, 1000,0.5,3.5])
        plota.legend(loc=1)
        # Muestra la grafica-------------------------------------------------
        plota.set_title('Banda prohibida de los semiconductores')
        f.tight_layout()
        plota.grid(True)
        plota.scatter([x, ], [y, ], 50, color='red')
        canvas.draw()
        var.set("Valores sobre la curva\t Eg= "+str(y)+" con T= "+str(x))
def on_key_event(event):
    #Flecha de abajo
    if event.key==D:
        global state
        global a
        global b
        global x 
        x = x
        if state==5:
            state=0
        else:
            state=state+1
        graficar(x)
    #Flecha de arriba
    elif event.key==U:
        global state
        global a
        global b
        global x 
        x = x
        if state==0:
            state=5
        else:
            state=state-1
        graficar(x)
    #Flecha derecha
    elif event.key==R:
        global a
        global b
        global x 
        if x>=1000:
            x=1000
        else:
            x = x + 10
        graficar(x)
    #Flecha Izquierda
    elif event.key==L:
        global a
        global b
        global x 
        if x<=0:
            x=0
        else:
            x = x - 10
        graficar(x)
    else:
        pass
    key_press_handler(event, canvas, toolbar)
plot.text(4*10**(-6),1*10**(6) , r'$\ Area $')
canvas.mpl_connect('key_press_event', on_key_event)
label.pack(side="bottom", ipady=20)
#Continue el proceso
Tk.mainloop()


/home/asus/anaconda3/lib/python3.5/site-packages/matplotlib/tight_layout.py:222: UserWarning: tight_layout : falling back to Agg renderer
  warnings.warn("tight_layout : falling back to Agg renderer")
<ipython-input-1-cf6538dec4f7>:114: SyntaxWarning: name 'state' is assigned to before global declaration
  global state

In [ ]: