# DFS Tutorial Model - Henry Tsang 200815150 AI Coursework from Tkinter import * import Tkinter # I've done 2 imports because there seems to be an importing problem between PCs, this fixes that import tkMessageBox class AllTkinterWidgets: def __init__(self, master): #Each choice is a button, lines are repeated and called everytime a button is pushed #to clear the lines for every search. def choiceH(): c.create_line(400,10,400,45) #a c.create_line(400,45,500,70) # a to c c.create_line(400,45,300,70) # a to b c.create_line(300,80,250,120) # b to d c.create_line(300,80,350,120) # b to e c.create_line(500,80, 450,120) # c to f c.create_line(500,80, 550,120) # c to g c.create_line(250,130, 225, 170) # d to h c.create_line(250,130,275,170) # d to i c.create_line(350,130, 325, 170) # e to j c.create_line(350,130, 375, 170) # e to k c.create_line(450,130, 425, 170) # f to l c.create_line(450,130, 475, 170) # f to m c.create_line(550,130, 520, 170) # g to n c.create_line(550,130, 575, 170) # g to o c.create_line(400,10,400,45, fill = "red") c.create_line(400,45,300,70, fill = "red") c.create_line(300,80,250,120, fill = "red") c.create_line(250,130, 225, 170, fill = "red") def choiceI(): c.create_line(400,10,400,45) #a c.create_line(400,45,500,70) # a to c c.create_line(400,45,300,70) # a to b c.create_line(300,80,250,120) # b to d c.create_line(300,80,350,120) # b to e c.create_line(500,80, 450,120) # c to f c.create_line(500,80, 550,120) # c to g c.create_line(250,130, 225, 170) # d to h c.create_line(250,130,275,170) # d to i c.create_line(350,130, 325, 170) # e to j c.create_line(350,130, 375, 170) # e to k c.create_line(450,130, 425, 170) # f to l c.create_line(450,130, 475, 170) # f to m c.create_line(550,130, 520, 170) # g to n c.create_line(550,130, 575, 170) # g to o c.create_line(400,10,400,45, fill = "red") c.create_line(400,45,300,70, fill = "red") c.create_line(300,80,250,120, fill = "red") c.create_line(250,130, 225, 170, fill = "red", dash =(4,4)) c.create_line(250,130,275,170, fill = "red") def choiceJ(): c.create_line(400,10,400,45) #a c.create_line(400,45,500,70) # a to c c.create_line(400,45,300,70) # a to b c.create_line(300,80,250,120) # b to d c.create_line(300,80,350,120) # b to e c.create_line(500,80, 450,120) # c to f c.create_line(500,80, 550,120) # c to g c.create_line(250,130, 225, 170) # d to h c.create_line(250,130,275,170) # d to i c.create_line(350,130, 325, 170) # e to j c.create_line(350,130, 375, 170) # e to k c.create_line(450,130, 425, 170) # f to l c.create_line(450,130, 475, 170) # f to m c.create_line(550,130, 520, 170) # g to n c.create_line(550,130, 575, 170) # g to o c.create_line(400,10,400,45, fill = "red",dash =(4,4)) c.create_line(400,45,300,70, fill = "red",dash =(4,4)) c.create_line(300,80,250,120, fill = "red",dash =(4,4)) c.create_line(250,130, 225, 170, fill = "red", dash =(4,4)) c.create_line(250,130,275,170, fill = "red",dash =(4,4)) c.create_line(400,10,400,45, fill = "red") c.create_line(400,45,300,70, fill = "red") c.create_line(300,80,350,120, fill = "red") c.create_line(350,130, 325, 170, fill = "red") def choiceK(): c.create_line(400,10,400,45) #a c.create_line(400,45,500,70) # a to c c.create_line(400,45,300,70) # a to b c.create_line(300,80,250,120) # b to d c.create_line(300,80,350,120) # b to e c.create_line(500,80, 450,120) # c to f c.create_line(500,80, 550,120) # c to g c.create_line(250,130, 225, 170) # d to h c.create_line(250,130,275,170) # d to i c.create_line(350,130, 325, 170) # e to j c.create_line(350,130, 375, 170) # e to k c.create_line(450,130, 425, 170) # f to l c.create_line(450,130, 475, 170) # f to m c.create_line(550,130, 520, 170) # g to n c.create_line(550,130, 575, 170) # g to o c.create_line(400,10,400,45, fill = "red") c.create_line(400,45,300,70, fill = "red") c.create_line(300,80,250,120, fill = "red",dash =(4,4)) c.create_line(250,130, 225, 170, fill = "red", dash =(4,4)) c.create_line(250,130,275,170, fill = "red",dash =(4,4)) c.create_line(400,10,400,45, fill = "red", dash =(4,4)) c.create_line(400,45,300,70, fill = "red", dash =(4,4)) c.create_line(300,80,350,120, fill = "red") c.create_line(350,130, 325, 170, fill = "red", dash = (4,4)) c.create_line(350,130, 375, 170, fill = "red") def choiceL(): c.create_line(400,10,400,45) #a c.create_line(400,45,500,70) # a to c c.create_line(400,45,300,70) # a to b c.create_line(300,80,250,120) # b to d c.create_line(300,80,350,120) # b to e c.create_line(500,80, 450,120) # c to f c.create_line(500,80, 550,120) # c to g c.create_line(250,130, 225, 170) # d to h c.create_line(250,130,275,170) # d to i c.create_line(350,130, 325, 170) # e to j c.create_line(350,130, 375, 170) # e to k c.create_line(450,130, 425, 170) # f to l c.create_line(450,130, 475, 170) # f to m c.create_line(550,130, 520, 170) # g to n c.create_line(550,130, 575, 170) # g to o c.create_line(400,10,400,45, fill = "red") c.create_line(400,45,300,70, fill = "red",dash =(4,4)) c.create_line(300,80,250,120, fill = "red",dash =(4,4)) c.create_line(250,130, 225, 170, fill = "red", dash =(4,4)) c.create_line(250,130,275,170, fill = "red",dash =(4,4)) c.create_line(400,10,400,45, fill = "red", dash =(4,4)) c.create_line(400,45,300,70, fill = "red", dash =(4,4)) c.create_line(300,80,350,120, fill = "red", dash =(4,4)) c.create_line(350,130, 325, 170, fill = "red", dash =(4,4)) c.create_line(350,130, 375, 170, fill = "red", dash = (4,4)) c.create_line(400,45,500,70, fill = "red") c.create_line(450,130, 425, 170, fill = "red") c.create_line(500,80, 450,120, fill = "red") def choiceM(): c.create_line(400,10,400,45) #a c.create_line(400,45,500,70) # a to c c.create_line(400,45,300,70) # a to b c.create_line(300,80,250,120) # b to d c.create_line(300,80,350,120) # b to e c.create_line(500,80, 450,120) # c to f c.create_line(500,80, 550,120) # c to g c.create_line(250,130, 225, 170) # d to h c.create_line(250,130,275,170) # d to i c.create_line(350,130, 325, 170) # e to j c.create_line(350,130, 375, 170) # e to k c.create_line(450,130, 425, 170) # f to l c.create_line(450,130, 475, 170) # f to m c.create_line(550,130, 520, 170) # g to n c.create_line(550,130, 575, 170) # g to o c.create_line(400,10,400,45, fill = "red") c.create_line(400,45,300,70, fill = "red",dash =(4,4)) c.create_line(300,80,250,120, fill = "red",dash =(4,4)) c.create_line(250,130, 225, 170, fill = "red", dash =(4,4)) c.create_line(250,130,275,170, fill = "red",dash =(4,4)) c.create_line(400,10,400,45, fill = "red", dash =(4,4)) c.create_line(400,45,300,70, fill = "red", dash =(4,4)) c.create_line(300,80,350,120, fill = "red", dash =(4,4)) c.create_line(350,130, 325, 170, fill = "red", dash =(4,4)) c.create_line(350,130, 375, 170, fill = "red", dash = (4,4)) c.create_line(400,45,500,70, fill = "red") c.create_line(450,130, 425, 170, fill = "red",dash = (4,4)) c.create_line(500,80, 450,120, fill = "red") c.create_line(450,130, 475, 170, fill = "red") def choiceN(): c.create_line(400,10,400,45) #a c.create_line(400,45,500,70) # a to c c.create_line(400,45,300,70) # a to b c.create_line(300,80,250,120) # b to d c.create_line(300,80,350,120) # b to e c.create_line(500,80, 450,120) # c to f c.create_line(500,80, 550,120) # c to g c.create_line(250,130, 225, 170) # d to h c.create_line(250,130,275,170) # d to i c.create_line(350,130, 325, 170) # e to j c.create_line(350,130, 375, 170) # e to k c.create_line(450,130, 425, 170) # f to l c.create_line(450,130, 475, 170) # f to m c.create_line(550,130, 520, 170) # g to n c.create_line(550,130, 575, 170) # g to o c.create_line(400,10,400,45, fill = "red") c.create_line(400,45,300,70, fill = "red",dash =(4,4)) c.create_line(300,80,250,120, fill = "red",dash =(4,4)) c.create_line(250,130, 225, 170, fill = "red", dash =(4,4)) c.create_line(250,130,275,170, fill = "red",dash =(4,4)) c.create_line(400,10,400,45, fill = "red", dash =(4,4)) c.create_line(400,45,300,70, fill = "red", dash =(4,4)) c.create_line(300,80,350,120, fill = "red", dash =(4,4)) c.create_line(350,130, 325, 170, fill = "red", dash =(4,4)) c.create_line(350,130, 375, 170, fill = "red", dash = (4,4)) c.create_line(400,45,500,70, fill = "red") c.create_line(450,130, 425, 170, fill = "red",dash = (4,4)) c.create_line(500,80, 450,120, fill = "red", dash = (4,4)) c.create_line(450,130, 475, 170, fill = "red", dash = (4,4)) c.create_line(500,80, 550,120, fill = "red") c.create_line(550,130, 520, 170, fill = "red") def choiceO(): c.create_line(400,10,400,45) #a c.create_line(400,45,500,70) # a to c c.create_line(400,45,300,70) # a to b c.create_line(300,80,250,120) # b to d c.create_line(300,80,350,120) # b to e c.create_line(500,80, 450,120) # c to f c.create_line(500,80, 550,120) # c to g c.create_line(250,130, 225, 170) # d to h c.create_line(250,130,275,170) # d to i c.create_line(350,130, 325, 170) # e to j c.create_line(350,130, 375, 170) # e to k c.create_line(450,130, 425, 170) # f to l c.create_line(450,130, 475, 170) # f to m c.create_line(550,130, 520, 170) # g to n c.create_line(550,130, 575, 170) # g to o c.create_line(400,10,400,45, fill = "red") c.create_line(400,45,300,70, fill = "red",dash =(4,4)) c.create_line(300,80,250,120, fill = "red",dash =(4,4)) c.create_line(250,130, 225, 170, fill = "red", dash =(4,4)) c.create_line(250,130,275,170, fill = "red",dash =(4,4)) c.create_line(400,10,400,45, fill = "red", dash =(4,4)) c.create_line(400,45,300,70, fill = "red", dash =(4,4)) c.create_line(300,80,350,120, fill = "red", dash =(4,4)) c.create_line(350,130, 325, 170, fill = "red", dash =(4,4)) c.create_line(350,130, 375, 170, fill = "red", dash = (4,4)) c.create_line(400,45,500,70, fill = "red") c.create_line(450,130, 425, 170, fill = "red",dash = (4,4)) c.create_line(500,80, 450,120, fill = "red", dash = (4,4)) c.create_line(450,130, 475, 170, fill = "red", dash = (4,4)) c.create_line(500,80, 550,120, fill = "red") c.create_line(550,130, 520, 170, fill = "red", dash = (4,4)) c.create_line(550,130, 575, 170, fill = "red") # Original display upon load, this repeats in every function to clear. font = ('courier',8) # Sets font and font size frame = Frame(master, width=800, height=600, bd=1) # sets attributes of frame frame.pack() iframe5 = Frame(frame, bd=2, relief=RAISED) iframe5.pack(expand=1, fill=X, pady=10, padx=5) c = Canvas(iframe5, bg='white', width=800, height=600) #Sets attributes of the actual canvas in the frame c.create_text(400,400, text = 'Click a button below to see the path of DFS',font=font) c.create_text(400,5,text = 'A',font = font) c.create_text(300,75, text = 'B', font = font) ## creates text so that the path has viewable points c.create_text(500,75, text = 'C', font = font) c.create_text(250,125, text = 'D', font = font) c.create_text(350,125, text = 'E', font = font) c.create_text(450,125, text = 'F', font = font) c.create_text(550,125, text = 'G', font = font) c.create_text(225,175, text = 'H', font = font) c.create_text(275,175, text = 'I', font = font) c.create_text(325,175, text = 'J', font = font) c.create_text(375,175, text = 'K', font = font) c.create_text(425,175, text = 'L', font = font) c.create_text(475,175, text = 'M', font = font) c.create_text(520,175, text = 'N', font = font) c.create_text(575,175, text = 'O', font = font) c.pack() c.create_line(400,10,400,45) #a c.create_line(400,45,500,70) # a to c c.create_line(400,45,300,70) # a to b c.create_line(300,80,250,120) # b to d c.create_line(300,80,350,120) # b to e c.create_line(500,80, 450,120) # c to f c.create_line(500,80, 550,120) # c to g c.create_line(250,130, 225, 170) # d to h c.create_line(250,130,275,170) # d to i c.create_line(350,130, 325, 170) # e to j c.create_line(350,130, 375, 170) # e to k c.create_line(450,130, 425, 170) # f to l c.create_line(450,130, 475, 170) # f to m c.create_line(550,130, 520, 170) # g to n c.create_line(550,130, 575, 170) # g to o # All buttons H = Tkinter.Button(frame, text ="H",anchor = "w", command = choiceH) H.pack() I = Tkinter.Button(frame, text ="I", anchor = "w", command = choiceI) I.pack() J = Tkinter.Button(frame, text ="J", anchor = "w", command = choiceJ) J.pack() K = Tkinter.Button(frame, text ="K", anchor = "w", command = choiceK) K.pack() L = Tkinter.Button(frame, text ="L", anchor = "w", command = choiceL) L.pack() M = Tkinter.Button(frame, text ="M", anchor = "w", command = choiceM) M.pack() N = Tkinter.Button(frame, text ="N", anchor = "w", command = choiceN) N.pack() O = Tkinter.Button(frame, text ="O", anchor = "w", command = choiceO) O.pack() root = Tkinter.Tk() all = AllTkinterWidgets(root) root.title('Depth First Search Model') root.mainloop()