Advertisement
tipemaze

interface_graphique

Feb 21st, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.58 KB | None | 0 0
  1. from tkinter import*
  2. from math import*
  3.  
  4.  
  5. # Creation de la fenêtre
  6. mainF = Tk()
  7. mainF.title("Pathfinding - A* Algorithm")
  8. mainF.aspect(1,1,1,1)
  9.  
  10.  
  11. # Variables à modifier selon les coordonnées de départ
  12.  
  13. a,b = int(input("x0 = ")), int(input("y0 = "))
  14. c,d = int(input("x1 = ")), int(input("y1 = "))
  15. coord1=[a,b]
  16. coord2=[c,d]
  17.  
  18. # Le pas doit dépendre des hauteurs/largeurs pour rentrer dans l'écran.
  19. # On va dire que 900x900 est la maximum, donc à changer (je met 50 pour tester).
  20. pas=50
  21.  
  22.  
  23. # Ce sont les "réelles" largeur/hauteur (pas algébrique bien sûr)
  24. largeur_bc = abs(coord2[0]) + abs(coord1[0])
  25. hauteur_bc = abs(coord2[1]) + abs(coord1[1])
  26.  
  27. # La taille de la fenêtre, REEL * PAS
  28. mainF.geometry('%dx%d' % (largeur_bc*pas, hauteur_bc*pas))
  29.  
  30.  
  31. # Clique droit pour remettre la bonne taille de fenêtre
  32. def setup(event):
  33.     mainF.geometry('%dx%d' % (largeur_bc*pas, hauteur_bc*pas))
  34.     print("largeur=",largeur_bc*pas,"hauteur=",hauteur_bc*pas)
  35.     return
  36.  
  37.  
  38. # Clique gauche pour tracer à nouveau les lignes
  39. # Objectif principal : assimiler "liste_selon_hauteur" et "liste_selon_largeur" aux vrais coordonnées.
  40. # Une fonction s'impose
  41. def create_grid(event):
  42.     mainCanvas.delete("ligne")
  43.    
  44.     # On doit pouvoir générer le bon nombre de carré (en ligne, et en colonne)
  45.     # Là, c'est bon !
  46.    
  47.     liste_selon_hauteur=[]
  48.  
  49.     # Génération de lignes sur toute la hauteur (haut en bas), avec un pas proportionnel aux coordonnées
  50.     for i in range(0,hauteur,pas_l):
  51.         mainCanvas.create_line([(0,i), (largeur,i)], tag="ligne")
  52.         liste_selon_hauteur.append([i])
  53.    
  54.    
  55.     # Génération de lignes sur toute la largeur (gauce à droite), avec un pas proportionnel aux coordonnées
  56.     liste_selon_largeur=[]
  57.     for i in range(0,largeur,pas_h):
  58.         mainCanvas.create_line([(i,0), (i,hauteur)], tag="ligne")
  59.         liste_selon_largeur.append([i])
  60.    
  61.     print(liste_selon_hauteur,liste_selon_largeur)
  62.    
  63.    
  64.     #print("x=",event.x,"y=",event.y)
  65.  
  66.  
  67. # Défini ce qu'il faut pour qu'il y a un nombre de carré exact.
  68. # C'est ça la magie : tu rentres un truc qui a l'air random, ça te rend ce que tu voulais.
  69. def configure(event):
  70.     global hauteur,largeur,pas_h,pas_l
  71.    
  72.     hauteur, largeur = event.height, event.width
  73.     pas_h= int(hauteur/hauteur_bc)
  74.     pas_l= int(largeur/largeur_bc)
  75.  
  76.  
  77. mainCanvas=Canvas(mainF,bg="lightgray")
  78. mainCanvas.pack(fill=BOTH,expand=1)
  79.  
  80.  
  81. mainF.bind('<Button-1>',create_grid)
  82. mainF.bind('<Button-3>',setup)
  83. mainCanvas.bind("<Configure>",configure)
  84.  
  85. mainF.mainloop()
  86. mainCanvas.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement