Esempio n. 1
0
def animation_base():
    global offset, gap
    canvas2.delete('all')

    SSr.barrier(canvas2, gap)
    SSr.screen(canvas2, offset)
    SSr.screen2(canvas2, 'red')
Esempio n. 2
0
def reset_animation():
    global reset, status, x, reset_z

    status = True

    reset = False

    canvas2.delete('all')

    x = 50

    reset_z = True

    v.set(1)

    for i in range(1, 8):
        colour_choice[i].config(state='normal')

    SSr.barrier(canvas2, gap)
    SSr.screen(canvas2, offset)
    SSr.screen2(canvas2, 'red')

    start_button.config(state='normal', fg='black', bg='lime')
    pause_button.config(text='Pause', state='disable', bg='yellow')
    reset_button.config(state='disable')
    result_button.config(state='disable')
    gap_slider.config(state='normal')
    screen_offset_slider.config(state='normal')
Esempio n. 3
0
def animation_base():
    global offset, gap
    canvas2.delete('all')

    SSr.barrier(canvas2, gap)
    SSr.screen(canvas2, offset)
    SSr.screen2(canvas2, 'red')
    Calculation2.empty(answer_canvas)
Esempio n. 4
0
def reset_animation():
    global reset, status, x, reset_z, canvas3, x2, canvas4, colour

    status = True

    reset = False

    colour = False

    canvas2.delete('all')

    canvas4.destroy()

    x = 50

    reset_z = True

    v.set(0)

    for i in range(1, 8):
        colour_choice[i].config(state='normal')

    if x2 >= 290 + offset:
        canvas3.destroy()
    x2 = 1
    SSr.barrier(canvas2, gap)
    SSr.screen(canvas2, offset)
    SSr.screen2(canvas2, 'red')

    answer_canvas.delete('all')

    start_button.config(state='normal', fg='black', bg='lime')
    pause_button.config(text='Pause', state='disable', bg='yellow')
    reset_button.config(state='disable')

    gap_slider.config(state='normal')
    screen_offset_slider.config(state='normal')
    Calculation2.empty(answer_canvas)
Esempio n. 5
0
def start_animation():
    global reset, reset_z, num, gap, x, offset

    v_value()

    reset = True

    start_button.config(state='disable')
    pause_button.config(state='normal')
    reset_button.config(state='normal')
    result_button.config(state='normal')
    gap_slider.config(state='disable')
    screen_offset_slider.config(state='disable')

    gap_calculation_value()
    offset_calculation_value()

    gap = gap * 100

    offset = ((offset * 100) - 100) * 2

    for i in range(1, 8):
        colour_choice[i].config(state='disable')

    while reset == True:
        if reset == True and status == True:
            if num == 1:
                canvas2.delete('all')
                # barrier(canvas, gap_size)
                SSr.barrier(canvas2, gap)
                # screen(canvas)
                SSr.screen(canvas2, offset)
                # screen2(canvas, colour)
                SSr.screen2(canvas2, 'red')
                if x == 50:
                    x = 70
                if x <= 250:
                    # red_scene_1(canvas, wavelength, colour, x)
                    SSr.red_scene_1(canvas2, 60, 'red', x)

                    canvas2.create_text(102, 75, text='665nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(71, 80, 71, 90, fill='black')
                    canvas2.create_line(131, 80, 131, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(71, 85, 131, 85, fill='black')
                    #Arrow
                    canvas2.create_line(71, 85, 78, 88, fill='black')
                    canvas2.create_line(71, 85, 78, 82, fill='black')
                    canvas2.create_line(124, 88, 131, 85, fill='black')
                    canvas2.create_line(124, 82, 131, 85, fill='black')

                    x += 1
                elif x > 250:
                    # red_scene_2(canvas, colour, gap_size, a)
                    SSr.red_scene_2(canvas2, 'red', gap, reset_z, offset)

                    canvas2.create_text(102, 75, text='665nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(71, 80, 71, 90, fill='black')
                    canvas2.create_line(131, 80, 131, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(71, 85, 131, 85, fill='black')
                    #Arrow
                    canvas2.create_line(71, 85, 78, 88, fill='black')
                    canvas2.create_line(71, 85, 78, 82, fill='black')
                    canvas2.create_line(124, 88, 131, 85, fill='black')
                    canvas2.create_line(124, 82, 131, 85, fill='black')

                    reset_z = False

                # Window ---------------------------------------------------------
                root.after(7)

                canvas2.update()

            elif num == 2:
                canvas2.delete('all')
                # barrier(canvas, gap_size)
                SSo.barrier(canvas2, gap)
                # screen(canvas)
                SSo.screen(canvas2, offset)
                # screen2(canvas, colour)
                SSo.screen2(canvas2, 'orange')

                if x <= 250:
                    # red_scene_1(canvas, wavelength, colour, x)
                    SSo.orange_scene_1(canvas2, 60, 'orange', x)

                    canvas2.create_text(62, 75, text='630nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(31, 80, 31, 90, fill='black')
                    canvas2.create_line(91, 80, 91, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(31, 85, 91, 85, fill='black')
                    #Arrow
                    canvas2.create_line(31, 85, 38, 88, fill='black')
                    canvas2.create_line(31, 85, 38, 82, fill='black')
                    canvas2.create_line(84, 88, 91, 85, fill='black')
                    canvas2.create_line(84, 82, 91, 85, fill='black')

                    x += 1
                elif x > 250:
                    # red_scene_2(canvas, colour, gap_size, a)
                    SSo.orange_scene_2(canvas2, 'orange', gap, reset_z, offset)

                    canvas2.create_text(62, 75, text='630nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(31, 80, 31, 90, fill='black')
                    canvas2.create_line(91, 80, 91, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(31, 85, 91, 85, fill='black')
                    #Arrow
                    canvas2.create_line(31, 85, 38, 88, fill='black')
                    canvas2.create_line(31, 85, 38, 82, fill='black')
                    canvas2.create_line(84, 88, 91, 85, fill='black')
                    canvas2.create_line(84, 82, 91, 85, fill='black')
                    reset_z = False

                # Window --------------------------------------------------------
                root.after(7)
                canvas2.update()
            else:
                reset_animation()
                return tkMessageBox.showinfo('Colour Error',
                                             'Please choose a colour')

        else:
            break
Esempio n. 6
0
                           command=gap_value,
                           state='normal',
                           orient='horizontal',
                           length=150)
gap_slider.place(x=750, y=50)

# screen distance slider and label
offset_label = Tkinter.Label(upper_frame,
                             text='Distance from barrier\n to screen (m)',
                             bg='sky blue')
offset_label.place(x=770, y=110)
screen_offset_slider = Tkinter.Scale(upper_frame,
                                     from_=1.00,
                                     to=1.20,
                                     resolution=0.01,
                                     bg='sky blue',
                                     command=offset_value,
                                     state='normal',
                                     orient='horizontal',
                                     length=150)
screen_offset_slider.place(x=750, y=150)

# -------------------------------------------------------------------------

# main display for animation (won't be empty initially)
SSr.barrier(canvas2, gap_slider.get() * 100)
SSr.screen(canvas2, ((screen_offset_slider.get() * 100) - 100) * 2)
SSr.screen2(canvas2, 'red')

root.mainloop()
def start_animation():
    global reset, reset_z, num, gap, x, offset, canvas3, x2, canvas4

    get_result()

    reset = True

    start_button.config(state='disable')
    pause_button.config(state='normal')
    reset_button.config(state='normal')

    gap_slider.config(state='disable')
    screen_offset_slider.config(state='disable')

    gap_calculation_value()
    offset_calculation_value()

    gap = gap * 100

    offset = ((offset * 100) - 100) * 2

    for i in range(1, 8):
        colour_choice[i].config(state='disable')

    while reset == True:

        if reset == True and status == True:

            if num == 1:

                if x == 50:
                    x = 70
                if x <= 250:
                    canvas2.delete('all')
                    # barrier(canvas, gap_size)
                    SSr.barrier(canvas2, gap)
                    # screen(canvas)
                    SSr.screen(canvas2, offset)
                    # screen2(canvas, colour)
                    SSr.screen2(canvas2, 'red')
                    # red_scene_1(canvas, wavelength, colour, x)
                    SSr.red_scene_1(canvas2, 60, 'red', x)

                    canvas2.create_text(102, 75, text='665nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(71, 80, 71, 90, fill='black')
                    canvas2.create_line(131, 80, 131, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(71, 85, 131, 85, fill='black')
                    #Arrow
                    canvas2.create_line(71, 85, 78, 88, fill='black')
                    canvas2.create_line(71, 85, 78, 82, fill='black')
                    canvas2.create_line(124, 88, 131, 85, fill='black')
                    canvas2.create_line(124, 82, 131, 85, fill='black')

                    x += 1
                elif x > 250:

                    #canvas2.delete(SSr.barrier)
                    #canvas2.delete(SSr.screen2)
                    canvas2.delete('all')

                    # barrier(canvas, gap_size)
                    SSr.barrier(canvas2, gap)
                    # screen(canvas)

                    if x2 < 290 + offset:
                        SSr.screen(canvas2, offset)
                        x2 += 1
                    if x2 == 290 + offset:
                        canvas3 = Tkinter.Canvas(upper_frame,
                                                 width=45,
                                                 height=335,
                                                 bg='light grey',
                                                 highlightbackground='black')
                        canvas3.place(x=576 + offset, y=55)
                        SSr.colour_screen(canvas3)
                        x2 += 1

                        canvas4 = Tkinter.Canvas(upper_frame,
                                                 width=210,
                                                 height=340,
                                                 bg='black',
                                                 highlightbackground='black')
                        canvas4.place(x=687, y=56)

                        graph_label = Tkinter.Label(
                            canvas4,
                            text='Colour Intensity \nGraph',
                            bg='black',
                            fg='white',
                            font=('Arial', 20))
                        graph_label.place(x=10, y=140)

                        f = Figure(figsize=(2.1, 3.40), dpi=100)
                        a = f.add_subplot(111)
                        f.subplots_adjust(left=0,
                                          bottom=0,
                                          right=1,
                                          top=1,
                                          wspace=0,
                                          hspace=0)
                        f.set_facecolor('black')
                        graph_canvas = FigureCanvasTkAgg(f, master=canvas4)
                        graph_canvas.get_tk_widget().place(x=2, y=0)
                        SSG.SS_Graph1(graph_canvas, a, (10 + gap), 'red')

                    # screen2(canvas, colour)
                    SSr.screen2(canvas2, 'red')

                    # red_scene_2(canvas, colour, gap_size, a)
                    SSr.red_scene_2(canvas2, 'red', gap, reset_z, offset)

                    canvas2.create_text(102, 75, text='665nm', fill='black')

                    # Vertical lines
                    canvas2.create_line(71, 80, 71, 90, fill='black')
                    canvas2.create_line(131, 80, 131, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(71, 85, 131, 85, fill='black')
                    #Arrow
                    canvas2.create_line(71, 85, 78, 88, fill='black')
                    canvas2.create_line(71, 85, 78, 82, fill='black')
                    canvas2.create_line(124, 88, 131, 85, fill='black')
                    canvas2.create_line(124, 82, 131, 85, fill='black')

                    reset_z = False

                # Window ---------------------------------------------------------
                root.after(7)

                canvas2.update()

            elif num == 2:

                if x <= 250:
                    canvas2.delete('all')
                    # barrier(canvas, gap_size)
                    SSo.barrier(canvas2, gap)
                    # screen(canvas)
                    SSo.screen(canvas2, offset)
                    # screen2(canvas, colour)
                    SSo.screen2(canvas2, 'dark orange')
                    # red_scene_1(canvas, wavelength, colour, x)
                    SSo.orange_scene_1(canvas2, 55, 'dark orange', x)

                    canvas2.create_text(62, 75, text='630nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(31, 80, 31, 90, fill='black')
                    canvas2.create_line(91, 80, 91, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(31, 85, 91, 85, fill='black')
                    #Arrow
                    canvas2.create_line(31, 85, 38, 88, fill='black')
                    canvas2.create_line(31, 85, 38, 82, fill='black')
                    canvas2.create_line(84, 88, 91, 85, fill='black')
                    canvas2.create_line(84, 82, 91, 85, fill='black')

                    x += 1
                elif x > 250:
                    canvas2.delete('all')
                    # barrier(canvas, gap_size)
                    SSo.barrier(canvas2, gap)
                    # screen(canvas)

                    if x2 < 290 + offset:
                        SSo.screen(canvas2, offset)
                        x2 += 1
                    if x2 == 290 + offset:
                        canvas3 = Tkinter.Canvas(upper_frame,
                                                 width=45,
                                                 height=335,
                                                 bg='light grey',
                                                 highlightbackground='black')
                        canvas3.place(x=576 + offset, y=55)
                        SSo.colour_screen(canvas3)
                        x2 += 1

                        canvas4 = Tkinter.Canvas(upper_frame,
                                                 width=210,
                                                 height=340,
                                                 bg='black',
                                                 highlightbackground='black')
                        canvas4.place(x=687, y=56)

                        graph_label = Tkinter.Label(
                            canvas4,
                            text='Colour Intensity \nGraph',
                            bg='black',
                            fg='white',
                            font=('Arial', 20))
                        graph_label.place(x=10, y=140)

                        f = Figure(figsize=(2.1, 3.40), dpi=100)
                        a = f.add_subplot(111)
                        f.subplots_adjust(left=0,
                                          bottom=0,
                                          right=1,
                                          top=1,
                                          wspace=0,
                                          hspace=0)
                        f.set_facecolor('black')
                        graph_canvas = FigureCanvasTkAgg(f, master=canvas4)
                        graph_canvas.get_tk_widget().place(x=2, y=0)
                        SSG.SS_Graph1(graph_canvas, a, 10, 'orange')

                    # screen2(canvas, colour)
                    SSo.screen2(canvas2, 'dark orange')
                    # red_scene_2(canvas, colour, gap_size, a)
                    SSo.orange_scene_2(canvas2, 'dark orange', gap, reset_z,
                                       offset)

                    canvas2.create_text(62, 75, text='630nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(31, 80, 31, 90, fill='black')
                    canvas2.create_line(91, 80, 91, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(31, 85, 91, 85, fill='black')
                    #Arrow
                    canvas2.create_line(31, 85, 38, 88, fill='black')
                    canvas2.create_line(31, 85, 38, 82, fill='black')
                    canvas2.create_line(84, 88, 91, 85, fill='black')
                    canvas2.create_line(84, 82, 91, 85, fill='black')
                    reset_z = False

                # Window --------------------------------------------------------
                root.after(7)
                canvas2.update()

            elif num == 3:

                if x <= 250:
                    canvas2.delete('all')
                    # barrier(canvas, gap_size)
                    SSy.barrier(canvas2, gap)
                    # screen(canvas)
                    SSy.screen(canvas2, offset)
                    # screen2(canvas, colour)
                    SSy.screen2(canvas2, 'yellow')
                    # red_scene_1(canvas, wavelength, colour, x)
                    SSy.yellow_scene_1(canvas2, 50, 'yellow', x)

                    canvas2.create_text(77, 75, text='600nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(51, 80, 51, 90, fill='black')
                    canvas2.create_line(101, 80, 101, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(51, 85, 101, 85, fill='black')
                    #Arrow
                    canvas2.create_line(51, 85, 58, 88, fill='black')
                    canvas2.create_line(51, 85, 58, 82, fill='black')
                    canvas2.create_line(94, 88, 101, 85, fill='black')
                    canvas2.create_line(94, 82, 101, 85, fill='black')

                    x += 1
                elif x > 250:
                    canvas2.delete('all')
                    # barrier(canvas, gap_size)
                    SSy.barrier(canvas2, gap)
                    # screen(canvas)

                    if x2 < 290 + offset:
                        SSy.screen(canvas2, offset)
                        x2 += 1
                    if x2 == 290 + offset:
                        canvas3 = Tkinter.Canvas(upper_frame,
                                                 width=45,
                                                 height=335,
                                                 bg='light grey',
                                                 highlightbackground='black')
                        canvas3.place(x=576 + offset, y=55)
                        SSy.colour_screen(canvas3)
                        x2 += 1

                        canvas4 = Tkinter.Canvas(upper_frame,
                                                 width=210,
                                                 height=340,
                                                 bg='black',
                                                 highlightbackground='black')
                        canvas4.place(x=687, y=56)

                        graph_label = Tkinter.Label(
                            canvas4,
                            text='Colour Intensity \nGraph',
                            bg='black',
                            fg='white',
                            font=('Arial', 20))
                        graph_label.place(x=10, y=140)

                        f = Figure(figsize=(2.1, 3.40), dpi=100)
                        a = f.add_subplot(111)
                        f.subplots_adjust(left=0,
                                          bottom=0,
                                          right=1,
                                          top=1,
                                          wspace=0,
                                          hspace=0)
                        f.set_facecolor('black')
                        graph_canvas = FigureCanvasTkAgg(f, master=canvas4)
                        graph_canvas.get_tk_widget().place(x=2, y=0)
                        SSG.SS_Graph1(graph_canvas, a, 10, 'yellow')

                    # screen2(canvas, colour)
                    SSy.screen2(canvas2, 'yellow')
                    # red_scene_2(canvas, colour, gap_size, a)
                    SSy.yellow_scene_2(canvas2, 'yellow', gap, reset_z, offset)

                    canvas2.create_text(77, 75, text='600nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(51, 80, 51, 90, fill='black')
                    canvas2.create_line(101, 80, 101, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(51, 85, 101, 85, fill='black')
                    #Arrow
                    canvas2.create_line(51, 85, 58, 88, fill='black')
                    canvas2.create_line(51, 85, 58, 82, fill='black')
                    canvas2.create_line(94, 88, 101, 85, fill='black')
                    canvas2.create_line(94, 82, 101, 85, fill='black')
                    reset_z = False

                # Window --------------------------------------------------------
                root.after(7)
                canvas2.update()

            elif num == 4:

                if x <= 250:
                    canvas2.delete('all')
                    # barrier(canvas, gap_size)
                    SSg.barrier(canvas2, gap)
                    # screen(canvas)
                    SSg.screen(canvas2, offset)
                    # screen2(canvas, colour)
                    SSg.screen2(canvas2, 'teal')
                    # red_scene_1(canvas, wavelength, colour, x)
                    SSg.green_scene_1(canvas2, 45, 'teal', x)
                    SSg.screen2(canvas2, 'teal')

                    canvas2.create_text(97, 75, text='550nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(71, 80, 71, 90, fill='black')
                    canvas2.create_line(121, 80, 121, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(71, 85, 121, 85, fill='black')
                    #Arrow
                    canvas2.create_line(71, 85, 78, 88, fill='black')
                    canvas2.create_line(71, 85, 78, 82, fill='black')
                    canvas2.create_line(114, 88, 121, 85, fill='black')
                    canvas2.create_line(114, 82, 121, 85, fill='black')

                    x += 1
                elif x > 250:
                    canvas2.delete('all')
                    # barrier(canvas, gap_size)
                    SSg.barrier(canvas2, gap)
                    # screen(canvas)

                    if x2 < 290 + offset:
                        SSg.screen(canvas2, offset)
                        x2 += 1
                    if x2 == 290 + offset:
                        canvas3 = Tkinter.Canvas(upper_frame,
                                                 width=45,
                                                 height=335,
                                                 bg='light grey',
                                                 highlightbackground='black')
                        canvas3.place(x=576 + offset, y=55)
                        SSg.colour_screen(canvas3)
                        x2 += 1

                        canvas4 = Tkinter.Canvas(upper_frame,
                                                 width=210,
                                                 height=340,
                                                 bg='black',
                                                 highlightbackground='black')
                        canvas4.place(x=687, y=56)

                        graph_label = Tkinter.Label(
                            canvas4,
                            text='Colour Intensity \nGraph',
                            bg='black',
                            fg='white',
                            font=('Arial', 20))
                        graph_label.place(x=10, y=140)

                        f = Figure(figsize=(2.1, 3.40), dpi=100)
                        a = f.add_subplot(111)
                        f.subplots_adjust(left=0,
                                          bottom=0,
                                          right=1,
                                          top=1,
                                          wspace=0,
                                          hspace=0)
                        f.set_facecolor('black')
                        graph_canvas = FigureCanvasTkAgg(f, master=canvas4)
                        graph_canvas.get_tk_widget().place(x=2, y=0)
                        SSG.SS_Graph1(graph_canvas, a, 10, 'teal')

                    # screen2(canvas, colour)
                    SSg.screen2(canvas2, 'teal')
                    # red_scene_2(canvas, colour, gap_size, a)
                    SSg.green_scene_2(canvas2, 'teal', gap, reset_z, offset)
                    SSg.screen2(canvas2, 'teal')

                    canvas2.create_text(97, 75, text='550nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(71, 80, 71, 90, fill='black')
                    canvas2.create_line(121, 80, 121, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(71, 85, 121, 85, fill='black')
                    #Arrow
                    canvas2.create_line(71, 85, 78, 88, fill='black')
                    canvas2.create_line(71, 85, 78, 82, fill='black')
                    canvas2.create_line(114, 88, 121, 85, fill='black')
                    canvas2.create_line(114, 82, 121, 85, fill='black')
                    reset_z = False

                # Window --------------------------------------------------------
                root.after(7)
                canvas2.update()

            elif num == 5:

                if x <= 250:
                    canvas2.delete('all')
                    # barrier(canvas, gap_size)
                    SSb.barrier(canvas2, gap)
                    # screen(canvas)
                    SSb.screen(canvas2, offset)
                    # screen2(canvas, colour)
                    SSb.screen2(canvas2, 'blue')
                    # red_scene_1(canvas, wavelength, colour, x)
                    SSb.blue_scene_1(canvas2, 40, 'blue', x)

                    canvas2.create_text(75, 75, text='470nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(51, 80, 51, 90, fill='black')
                    canvas2.create_line(91, 80, 91, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(51, 85, 91, 85, fill='black')
                    #Arrow
                    canvas2.create_line(51, 85, 58, 88, fill='black')
                    canvas2.create_line(51, 85, 58, 82, fill='black')
                    canvas2.create_line(84, 88, 91, 85, fill='black')
                    canvas2.create_line(84, 82, 91, 85, fill='black')

                    x += 1
                elif x > 250:
                    canvas2.delete('all')
                    # barrier(canvas, gap_size)
                    SSb.barrier(canvas2, gap)
                    # screen(canvas)

                    if x2 < 290 + offset:
                        SSb.screen(canvas2, offset)
                        x2 += 1
                    if x2 == 290 + offset:
                        canvas3 = Tkinter.Canvas(upper_frame,
                                                 width=45,
                                                 height=335,
                                                 bg='light grey',
                                                 highlightbackground='black')
                        canvas3.place(x=576 + offset, y=55)
                        SSb.colour_screen(canvas3)
                        x2 += 1

                        canvas4 = Tkinter.Canvas(upper_frame,
                                                 width=210,
                                                 height=340,
                                                 bg='black',
                                                 highlightbackground='black')
                        canvas4.place(x=687, y=56)

                        graph_label = Tkinter.Label(
                            canvas4,
                            text='Colour Intensity \nGraph',
                            bg='black',
                            fg='white',
                            font=('Arial', 20))
                        graph_label.place(x=10, y=140)

                        f = Figure(figsize=(2.1, 3.40), dpi=100)
                        a = f.add_subplot(111)
                        f.subplots_adjust(left=0,
                                          bottom=0,
                                          right=1,
                                          top=1,
                                          wspace=0,
                                          hspace=0)
                        f.set_facecolor('black')
                        graph_canvas = FigureCanvasTkAgg(f, master=canvas4)
                        graph_canvas.get_tk_widget().place(x=2, y=0)
                        SSG.SS_Graph1(graph_canvas, a, 10, 'blue')

                    # screen2(canvas, colour)
                    SSb.screen2(canvas2, 'blue')
                    # red_scene_2(canvas, colour, gap_size, a)
                    SSb.blue_scene_2(canvas2, 'blue', gap, reset_z, offset)

                    canvas2.create_text(75, 75, text='470nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(51, 80, 51, 90, fill='black')
                    canvas2.create_line(91, 80, 91, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(51, 85, 91, 85, fill='black')
                    #Arrow
                    canvas2.create_line(51, 85, 58, 88, fill='black')
                    canvas2.create_line(51, 85, 58, 82, fill='black')
                    canvas2.create_line(84, 88, 91, 85, fill='black')
                    canvas2.create_line(84, 82, 91, 85, fill='black')
                    reset_z = False

                # Window --------------------------------------------------------
                root.after(7)
                canvas2.update()

            elif num == 6:

                if x <= 250:
                    canvas2.delete('all')
                    # barrier(canvas, gap_size)
                    SSi.barrier(canvas2, gap)
                    # screen(canvas)
                    SSi.screen(canvas2, offset)
                    # screen2(canvas, colour)
                    SSi.screen2(canvas2, 'indigo')
                    # red_scene_1(canvas, wavelength, colour, x)
                    SSi.indigo_scene_1(canvas2, 35, 'indigo', x)

                    canvas2.create_text(65, 75, text='425nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(41, 80, 41, 90, fill='black')
                    canvas2.create_line(76, 80, 76, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(41, 85, 76, 85, fill='black')
                    #Arrow
                    canvas2.create_line(41, 85, 48, 88, fill='black')
                    canvas2.create_line(41, 85, 48, 82, fill='black')
                    canvas2.create_line(69, 88, 76, 85, fill='black')
                    canvas2.create_line(69, 82, 76, 85, fill='black')

                    x += 1
                elif x > 250:
                    canvas2.delete('all')
                    # barrier(canvas, gap_size)
                    SSi.barrier(canvas2, gap)
                    # screen(canvas)

                    if x2 < 290 + offset:
                        SSi.screen(canvas2, offset)
                        x2 += 1
                    if x2 == 290 + offset:
                        canvas3 = Tkinter.Canvas(upper_frame,
                                                 width=45,
                                                 height=335,
                                                 bg='light grey',
                                                 highlightbackground='black')
                        canvas3.place(x=576 + offset, y=55)
                        SSi.colour_screen(canvas3)
                        x2 += 1

                        canvas4 = Tkinter.Canvas(upper_frame,
                                                 width=210,
                                                 height=340,
                                                 bg='black',
                                                 highlightbackground='black')
                        canvas4.place(x=687, y=56)

                        graph_label = Tkinter.Label(
                            canvas4,
                            text='Colour Intensity \nGraph',
                            bg='black',
                            fg='white',
                            font=('Arial', 20))
                        graph_label.place(x=10, y=140)

                        f = Figure(figsize=(2.1, 3.40), dpi=100)
                        a = f.add_subplot(111)
                        f.subplots_adjust(left=0,
                                          bottom=0,
                                          right=1,
                                          top=1,
                                          wspace=0,
                                          hspace=0)
                        f.set_facecolor('black')
                        graph_canvas = FigureCanvasTkAgg(f, master=canvas4)
                        graph_canvas.get_tk_widget().place(x=2, y=0)
                        SSG.SS_Graph1(graph_canvas, a, 10, 'indigo')

                    # screen2(canvas, colour)
                    SSi.screen2(canvas2, 'indigo')
                    # red_scene_2(canvas, colour, gap_size, a)
                    SSi.indigo_scene_2(canvas2, 'indigo', gap, reset_z, offset)

                    canvas2.create_text(65, 75, text='425nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(41, 80, 41, 90, fill='black')
                    canvas2.create_line(76, 80, 76, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(41, 85, 76, 85, fill='black')
                    #Arrow
                    canvas2.create_line(41, 85, 48, 88, fill='black')
                    canvas2.create_line(41, 85, 48, 82, fill='black')
                    canvas2.create_line(69, 88, 76, 85, fill='black')
                    canvas2.create_line(69, 82, 76, 85, fill='black')
                    reset_z = False

                # Window --------------------------------------------------------
                root.after(7)
                canvas2.update()

            elif num == 7:

                if x <= 250:
                    canvas2.delete('all')
                    # barrier(canvas, gap_size)
                    SSp.barrier(canvas2, gap)
                    # screen(canvas)
                    SSp.screen(canvas2, offset)
                    # screen2(canvas, colour)
                    SSp.screen2(canvas2, 'violet')
                    # red_scene_1(canvas, wavelength, colour, x)
                    SSp.purple_scene_1(canvas2, 30, 'violet', x)
                    SSp.screen2(canvas2, 'violet')

                    canvas2.create_text(95, 75, text='400nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(71, 80, 71, 90, fill='black')
                    canvas2.create_line(101, 80, 101, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(71, 85, 101, 85, fill='black')
                    #Arrow
                    canvas2.create_line(71, 85, 78, 88, fill='black')
                    canvas2.create_line(71, 85, 78, 82, fill='black')
                    canvas2.create_line(93, 88, 100, 85, fill='black')
                    canvas2.create_line(93, 82, 100, 85, fill='black')

                    x += 1
                elif x > 250:
                    canvas2.delete('all')
                    # barrier(canvas, gap_size)
                    SSp.barrier(canvas2, gap)
                    # screen(canvas)

                    if x2 < 290 + offset:
                        SSp.screen(canvas2, offset)
                        x2 += 1
                    if x2 == 290 + offset:
                        canvas3 = Tkinter.Canvas(upper_frame,
                                                 width=45,
                                                 height=335,
                                                 bg='light grey',
                                                 highlightbackground='black')
                        canvas3.place(x=576 + offset, y=55)
                        SSp.colour_screen(canvas3)
                        x2 += 1

                        canvas4 = Tkinter.Canvas(upper_frame,
                                                 width=210,
                                                 height=340,
                                                 bg='black',
                                                 highlightbackground='black')
                        canvas4.place(x=687, y=56)

                        graph_label = Tkinter.Label(
                            canvas4,
                            text='Colour Intensity \nGraph',
                            bg='black',
                            fg='white',
                            font=('Arial', 20))
                        graph_label.place(x=10, y=140)

                        f = Figure(figsize=(2.1, 3.40), dpi=100)
                        a = f.add_subplot(111)
                        f.subplots_adjust(left=0,
                                          bottom=0,
                                          right=1,
                                          top=1,
                                          wspace=0,
                                          hspace=0)
                        f.set_facecolor('black')
                        graph_canvas = FigureCanvasTkAgg(f, master=canvas4)
                        graph_canvas.get_tk_widget().place(x=2, y=0)
                        SSG.SS_Graph1(graph_canvas, a, 10, 'violet')

                    # screen2(canvas, colour)
                    SSp.screen2(canvas2, 'violet')
                    # red_scene_2(canvas, colour, gap_size, a)
                    SSp.purple_scene_2(canvas2, 'violet', gap, reset_z, offset)

                    canvas2.create_text(95, 75, text='400nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(71, 80, 71, 90, fill='black')
                    canvas2.create_line(101, 80, 101, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(71, 85, 101, 85, fill='black')
                    #Arrow
                    canvas2.create_line(71, 85, 78, 88, fill='black')
                    canvas2.create_line(71, 85, 78, 82, fill='black')
                    canvas2.create_line(93, 88, 100, 85, fill='black')
                    canvas2.create_line(93, 82, 100, 85, fill='black')
                    reset_z = False

                # Window --------------------------------------------------------
                root.after(7)
                canvas2.update()
            else:
                reset_animation()
                return tkMessageBox.showinfo('Colour Error',
                                             'Please choose a colour')

        else:
            break
Esempio n. 8
0
def start_animation():
    global reset, reset_z, num, gap, x, offset, canvas3, x2

    get_result()

    reset = True

    start_button.config(state='disable')
    pause_button.config(state='normal')
    reset_button.config(state='normal')

    gap_slider.config(state='disable')
    screen_offset_slider.config(state='disable')

    gap_calculation_value()
    offset_calculation_value()

    gap = gap * 100

    offset = ((offset * 100) - 100) * 2

    for i in range(1, 8):
        colour_choice[i].config(state='disable')

    while reset == True:

        if reset == True and status == True:

            if num == 1:

                if x == 50:
                    x = 70
                if x <= 250:
                    canvas2.delete('all')
                    # barrier(canvas, gap_size)
                    SSr.barrier(canvas2, gap)
                    # screen(canvas)
                    SSr.screen(canvas2, offset)
                    # screen2(canvas, colour)
                    SSr.screen2(canvas2, 'red')
                    # red_scene_1(canvas, wavelength, colour, x)
                    SSr.red_scene_1(canvas2, 60, 'red', x)

                    canvas2.create_text(102, 75, text='665nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(71, 80, 71, 90, fill='black')
                    canvas2.create_line(131, 80, 131, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(71, 85, 131, 85, fill='black')
                    #Arrow
                    canvas2.create_line(71, 85, 78, 88, fill='black')
                    canvas2.create_line(71, 85, 78, 82, fill='black')
                    canvas2.create_line(124, 88, 131, 85, fill='black')
                    canvas2.create_line(124, 82, 131, 85, fill='black')

                    x += 1
                elif x > 250:

                    #canvas2.delete(SSr.barrier)
                    #canvas2.delete(SSr.screen2)
                    canvas2.delete('all')

                    # barrier(canvas, gap_size)
                    SSr.barrier(canvas2, gap)
                    # screen(canvas)

                    if x2 < 290 + offset:
                        SSr.screen(canvas2, offset)
                        x2 += 1
                    if x2 == 290 + offset:
                        canvas3 = Tkinter.Canvas(upper_frame,
                                                 width=45,
                                                 height=335,
                                                 bg='light grey',
                                                 highlightbackground='black')
                        canvas3.place(x=575 + offset, y=55)
                        SSr.colour_screen(canvas3)
                        x2 += 1

                    # screen2(canvas, colour)
                    SSr.screen2(canvas2, 'red')

                    # red_scene_2(canvas, colour, gap_size, a)
                    SSr.red_scene_2(canvas2, 'red', gap, reset_z, offset)

                    canvas2.create_text(102, 75, text='665nm', fill='black')

                    # Vertical lines
                    canvas2.create_line(71, 80, 71, 90, fill='black')
                    canvas2.create_line(131, 80, 131, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(71, 85, 131, 85, fill='black')
                    #Arrow
                    canvas2.create_line(71, 85, 78, 88, fill='black')
                    canvas2.create_line(71, 85, 78, 82, fill='black')
                    canvas2.create_line(124, 88, 131, 85, fill='black')
                    canvas2.create_line(124, 82, 131, 85, fill='black')

                    reset_z = False

                # Window ---------------------------------------------------------
                root.after(7)

                canvas2.update()

            elif num == 2:

                if x <= 250:
                    canvas2.delete('all')
                    # barrier(canvas, gap_size)
                    SSo.barrier(canvas2, gap)
                    # screen(canvas)
                    SSo.screen(canvas2, offset)
                    # screen2(canvas, colour)
                    SSo.screen2(canvas2, 'orange')
                    # red_scene_1(canvas, wavelength, colour, x)
                    SSo.orange_scene_1(canvas2, 55, 'orange', x)

                    canvas2.create_text(62, 75, text='630nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(31, 80, 31, 90, fill='black')
                    canvas2.create_line(91, 80, 91, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(31, 85, 91, 85, fill='black')
                    #Arrow
                    canvas2.create_line(31, 85, 38, 88, fill='black')
                    canvas2.create_line(31, 85, 38, 82, fill='black')
                    canvas2.create_line(84, 88, 91, 85, fill='black')
                    canvas2.create_line(84, 82, 91, 85, fill='black')

                    x += 1
                elif x > 250:
                    canvas2.delete('all')
                    # barrier(canvas, gap_size)
                    SSo.barrier(canvas2, gap)
                    # screen(canvas)
                    SSo.screen(canvas2, offset)
                    # screen2(canvas, colour)
                    SSo.screen2(canvas2, 'orange')
                    # red_scene_2(canvas, colour, gap_size, a)
                    SSo.orange_scene_2(canvas2, 'orange', gap, reset_z, offset)

                    canvas2.create_text(62, 75, text='630nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(31, 80, 31, 90, fill='black')
                    canvas2.create_line(91, 80, 91, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(31, 85, 91, 85, fill='black')
                    #Arrow
                    canvas2.create_line(31, 85, 38, 88, fill='black')
                    canvas2.create_line(31, 85, 38, 82, fill='black')
                    canvas2.create_line(84, 88, 91, 85, fill='black')
                    canvas2.create_line(84, 82, 91, 85, fill='black')
                    reset_z = False

                # Window --------------------------------------------------------
                root.after(7)
                canvas2.update()

            elif num == 3:

                if x <= 250:
                    canvas2.delete('all')
                    # barrier(canvas, gap_size)
                    SSy.barrier(canvas2, gap)
                    # screen(canvas)
                    SSy.screen(canvas2, offset)
                    # screen2(canvas, colour)
                    SSy.screen2(canvas2, 'yellow')
                    # red_scene_1(canvas, wavelength, colour, x)
                    SSy.yellow_scene_1(canvas2, 50, 'yellow', x)

                    canvas2.create_text(77, 75, text='600nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(51, 80, 51, 90, fill='black')
                    canvas2.create_line(101, 80, 101, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(51, 85, 101, 85, fill='black')
                    #Arrow
                    canvas2.create_line(51, 85, 58, 88, fill='black')
                    canvas2.create_line(51, 85, 58, 82, fill='black')
                    canvas2.create_line(94, 88, 101, 85, fill='black')
                    canvas2.create_line(94, 82, 101, 85, fill='black')

                    x += 1
                elif x > 250:
                    canvas2.delete('all')
                    # barrier(canvas, gap_size)
                    SSy.barrier(canvas2, gap)
                    # screen(canvas)
                    SSy.screen(canvas2, offset)
                    # screen2(canvas, colour)
                    SSy.screen2(canvas2, 'yellow')
                    # red_scene_2(canvas, colour, gap_size, a)
                    SSy.yellow_scene_2(canvas2, 'yellow', gap, reset_z, offset)

                    canvas2.create_text(77, 75, text='600nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(51, 80, 51, 90, fill='black')
                    canvas2.create_line(101, 80, 101, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(51, 85, 101, 85, fill='black')
                    #Arrow
                    canvas2.create_line(51, 85, 58, 88, fill='black')
                    canvas2.create_line(51, 85, 58, 82, fill='black')
                    canvas2.create_line(94, 88, 101, 85, fill='black')
                    canvas2.create_line(94, 82, 101, 85, fill='black')
                    reset_z = False

                # Window --------------------------------------------------------
                root.after(7)
                canvas2.update()

            elif num == 4:

                if x <= 250:
                    canvas2.delete('all')
                    # barrier(canvas, gap_size)
                    SSg.barrier(canvas2, gap)
                    # screen(canvas)
                    SSg.screen(canvas2, offset)
                    # screen2(canvas, colour)
                    SSg.screen2(canvas2, 'teal')
                    # red_scene_1(canvas, wavelength, colour, x)
                    SSg.green_scene_1(canvas2, 45, 'teal', x)
                    SSg.screen2(canvas2, 'teal')

                    canvas2.create_text(97, 75, text='550nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(71, 80, 71, 90, fill='black')
                    canvas2.create_line(121, 80, 121, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(71, 85, 121, 85, fill='black')
                    #Arrow
                    canvas2.create_line(71, 85, 78, 88, fill='black')
                    canvas2.create_line(71, 85, 78, 82, fill='black')
                    canvas2.create_line(114, 88, 121, 85, fill='black')
                    canvas2.create_line(114, 82, 121, 85, fill='black')

                    x += 1
                elif x > 250:
                    canvas2.delete('all')
                    # barrier(canvas, gap_size)
                    SSg.barrier(canvas2, gap)
                    # screen(canvas)
                    SSg.screen(canvas2, offset)
                    # screen2(canvas, colour)
                    SSg.screen2(canvas2, 'teal')
                    # red_scene_2(canvas, colour, gap_size, a)
                    SSg.green_scene_2(canvas2, 'teal', gap, reset_z, offset)
                    SSg.screen2(canvas2, 'teal')

                    canvas2.create_text(97, 75, text='550nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(71, 80, 71, 90, fill='black')
                    canvas2.create_line(121, 80, 121, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(71, 85, 121, 85, fill='black')
                    #Arrow
                    canvas2.create_line(71, 85, 78, 88, fill='black')
                    canvas2.create_line(71, 85, 78, 82, fill='black')
                    canvas2.create_line(114, 88, 121, 85, fill='black')
                    canvas2.create_line(114, 82, 121, 85, fill='black')
                    reset_z = False

                # Window --------------------------------------------------------
                root.after(7)
                canvas2.update()

            elif num == 5:

                if x <= 250:
                    canvas2.delete('all')
                    # barrier(canvas, gap_size)
                    SSb.barrier(canvas2, gap)
                    # screen(canvas)
                    SSb.screen(canvas2, offset)
                    # screen2(canvas, colour)
                    SSb.screen2(canvas2, 'blue')
                    # red_scene_1(canvas, wavelength, colour, x)
                    SSb.blue_scene_1(canvas2, 40, 'blue', x)

                    canvas2.create_text(75, 75, text='470nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(51, 80, 51, 90, fill='black')
                    canvas2.create_line(91, 80, 91, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(51, 85, 91, 85, fill='black')
                    #Arrow
                    canvas2.create_line(51, 85, 58, 88, fill='black')
                    canvas2.create_line(51, 85, 58, 82, fill='black')
                    canvas2.create_line(84, 88, 91, 85, fill='black')
                    canvas2.create_line(84, 82, 91, 85, fill='black')

                    x += 1
                elif x > 250:
                    canvas2.delete('all')
                    # barrier(canvas, gap_size)
                    SSb.barrier(canvas2, gap)
                    # screen(canvas)
                    SSb.screen(canvas2, offset)
                    # screen2(canvas, colour)
                    SSb.screen2(canvas2, 'blue')
                    # red_scene_2(canvas, colour, gap_size, a)
                    SSb.blue_scene_2(canvas2, 'blue', gap, reset_z, offset)

                    canvas2.create_text(75, 75, text='470nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(51, 80, 51, 90, fill='black')
                    canvas2.create_line(91, 80, 91, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(51, 85, 91, 85, fill='black')
                    #Arrow
                    canvas2.create_line(51, 85, 58, 88, fill='black')
                    canvas2.create_line(51, 85, 58, 82, fill='black')
                    canvas2.create_line(84, 88, 91, 85, fill='black')
                    canvas2.create_line(84, 82, 91, 85, fill='black')
                    reset_z = False

                # Window --------------------------------------------------------
                root.after(7)
                canvas2.update()

            elif num == 6:

                if x <= 250:
                    canvas2.delete('all')
                    # barrier(canvas, gap_size)
                    SSi.barrier(canvas2, gap)
                    # screen(canvas)
                    SSi.screen(canvas2, offset)
                    # screen2(canvas, colour)
                    SSi.screen2(canvas2, 'indigo')
                    # red_scene_1(canvas, wavelength, colour, x)
                    SSi.indigo_scene_1(canvas2, 35, 'indigo', x)

                    canvas2.create_text(65, 75, text='425nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(41, 80, 41, 90, fill='black')
                    canvas2.create_line(76, 80, 76, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(41, 85, 76, 85, fill='black')
                    #Arrow
                    canvas2.create_line(41, 85, 48, 88, fill='black')
                    canvas2.create_line(41, 85, 48, 82, fill='black')
                    canvas2.create_line(69, 88, 76, 85, fill='black')
                    canvas2.create_line(69, 82, 76, 85, fill='black')

                    x += 1
                elif x > 250:
                    canvas2.delete('all')
                    # barrier(canvas, gap_size)
                    SSi.barrier(canvas2, gap)
                    # screen(canvas)
                    SSi.screen(canvas2, offset)
                    # screen2(canvas, colour)
                    SSi.screen2(canvas2, 'indigo')
                    # red_scene_2(canvas, colour, gap_size, a)
                    SSi.indigo_scene_2(canvas2, 'indigo', gap, reset_z, offset)

                    canvas2.create_text(65, 75, text='425nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(41, 80, 41, 90, fill='black')
                    canvas2.create_line(76, 80, 76, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(41, 85, 76, 85, fill='black')
                    #Arrow
                    canvas2.create_line(41, 85, 48, 88, fill='black')
                    canvas2.create_line(41, 85, 48, 82, fill='black')
                    canvas2.create_line(69, 88, 76, 85, fill='black')
                    canvas2.create_line(69, 82, 76, 85, fill='black')
                    reset_z = False

                # Window --------------------------------------------------------
                root.after(7)
                canvas2.update()

            elif num == 7:

                if x <= 250:
                    canvas2.delete('all')
                    # barrier(canvas, gap_size)
                    SSp.barrier(canvas2, gap)
                    # screen(canvas)
                    SSp.screen(canvas2, offset)
                    # screen2(canvas, colour)
                    SSp.screen2(canvas2, 'violet')
                    # red_scene_1(canvas, wavelength, colour, x)
                    SSp.purple_scene_1(canvas2, 30, 'violet', x)
                    SSp.screen2(canvas2, 'violet')

                    canvas2.create_text(95, 75, text='400nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(71, 80, 71, 90, fill='black')
                    canvas2.create_line(101, 80, 101, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(71, 85, 101, 85, fill='black')
                    #Arrow
                    canvas2.create_line(71, 85, 78, 88, fill='black')
                    canvas2.create_line(71, 85, 78, 82, fill='black')
                    canvas2.create_line(93, 88, 100, 85, fill='black')
                    canvas2.create_line(93, 82, 100, 85, fill='black')

                    x += 1
                elif x > 250:
                    canvas2.delete('all')
                    # barrier(canvas, gap_size)
                    SSp.barrier(canvas2, gap)
                    # screen(canvas)
                    SSp.screen(canvas2, offset)
                    # screen2(canvas, colour)
                    SSp.screen2(canvas2, 'violet')
                    # red_scene_2(canvas, colour, gap_size, a)
                    SSp.purple_scene_2(canvas2, 'violet', gap, reset_z, offset)

                    canvas2.create_text(95, 75, text='400nm', fill='black')
                    # Vertical lines
                    canvas2.create_line(71, 80, 71, 90, fill='black')
                    canvas2.create_line(101, 80, 101, 90, fill='black')

                    # Horizontal Line
                    canvas2.create_line(71, 85, 101, 85, fill='black')
                    #Arrow
                    canvas2.create_line(71, 85, 78, 88, fill='black')
                    canvas2.create_line(71, 85, 78, 82, fill='black')
                    canvas2.create_line(93, 88, 100, 85, fill='black')
                    canvas2.create_line(93, 82, 100, 85, fill='black')
                    reset_z = False

                # Window --------------------------------------------------------
                root.after(7)
                canvas2.update()
            else:
                reset_animation()
                return tkMessageBox.showinfo('Colour Error',
                                             'Please choose a colour')

        else:
            break