def animation_base(): global offset, gap canvas2.delete('all') SSr.barrier(canvas2, gap) SSr.screen(canvas2, offset) SSr.screen2(canvas2, 'red')
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')
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)
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)
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
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
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