Version : python3
module : tkinter
Je souhaite relier des objets graphiques (des "ronds") entre eux, c'est à dire en cliquant sur un rond, ensuite sur un deuxième, et hop un "un create_line" apparait entre les deux.
J'en suis au stade où j'ai crée un quadrillage, et je vais passer au stade de relier les points entre eux lorsque l'utilisateur clique sur un rond, puis le deuxieme,
voici le main :
import tkinter as tk
import libui_fork_test as ui
# initialisations
# Par défaut, la hauteur et la largeur du qadrillage est 2x2
h,l = 2,2
# fenêtre principale
root = ui.create_root()
# zone graphique
my_canvas = ui.create_canvas(root)
my_canvas.pack(side = tk.LEFT)
# configuration des bouttons
ButtonDraw, ButtonDelete, ButtonOut = ui.create_all_buttons(root,my_canvas,h,l)
hauteur_label = tk.Label(root, text = 'hauteur')
hauteur_label.pack()
hauteur_entry = tk.Entry(root)
hauteur_entry.pack()
largeur_label = tk.Label(root, text = 'largeur')
largeur_label.pack()
largeur_entry = tk.Entry(root)
largeur_entry.pack()
root.mainloop()
voici ma lib peso, c'est ici que je dois implémenter la fonction qui associe au clic souris le fait de relier deux ronds :
import tkinter as tk
import mainproj_fork_test as main
def create_root():
""" creer la fenêtre principale"""
root = tk.Tk()
root.title('entrelaceur')
return root
def create_canvas(root):
""" creer la zone de dessin qui va contenir l'entrelacs ainsi que le quadrillage"""
mycanvas = tk.Canvas(root, bg ='white')
return mycanvas
def create_button_draw():
BoutonDraw = tk.Button(main.root, text = 'draw', command=create_noeuds)
return BoutonDraw
def create_button_delete(root, my_canvas):
BoutonDelete = tk.Button(main.root, text = 'delete', command = lambda:my_canvas.delete(tk.ALL))
return BoutonDelete
def create_button_quitter(root):
BoutonOut = tk.Button(main.root,text="Sortir",command=main.root.destroy)
return BoutonOut
def create_all_buttons(root, my_canvas, h, l):
""" Créer et pack les boutons : Draw permettant de dessiner les noeuds, Delete permettant de supprimer le quadrillage, Sortir permettant de détruire la fenetre principale"""
BoutonDraw = create_button_draw()
BoutonDraw.pack()
BoutonDelete = create_button_delete(root, my_canvas)
BoutonDelete.pack()
BoutonOut = create_button_quitter(root)
BoutonOut.pack()
return (BoutonDraw,BoutonDelete, BoutonOut)
def create_noeuds():
create_noeuds1()
create_noeuds2()
def create_noeuds1():
""" Créer un quadrillage de noeuds en fonction de sa dimension ligne/colonne """
h = main.hauteur_entry.get()
l = main.largeur_entry.get()
i, j = 0, 0
x0,y0,x1,y1 = 30, 30 , 50 ,50
# création du quadrillage de dimension ligne, colonne
while i < int(l)-1 :
while j < int(h)-1 :
main.my_canvas.create_oval(x0,y0,x1,y1, fill = 'black')
x0 ,x1 = x0 + 60 , x1 + 60
j = j + 1
j = 0
i = i + 1
y0, y1 = y0 + 60, y1 + 60
x0, x1 = 30, 50
def create_noeuds2():
h = main.hauteur_entry.get()
l = main.largeur_entry.get()
i, j = 0, 0
x0,y0,x1,y1 = 0, 0, 20, 20
while i < int(l):
while j < int(h):
main.my_canvas.create_oval(x0,y0,x1,y1, fill = 'red')
x0, x1 = x0 + 60, x1 + 60
j = j+1
j = 0
i = i+1
y0, y1 = y0 + 60, y1 + 60
x0, x1 = 0, 20
def create_matrice(ligne, colonne):
n=[0]*ligne
m=[0]*colonne
l=[n,m]
print(l)
"""
def clic_listbox(event):
i=listbox.curselection() ## Récupération de l'index de l'élément sélectionné
return listbox.get(i) ## On retourne l'élément (un string) sélectionné
"""
#def create_listbox(root):
J'aimerai quelques conseils pour commencer à régler mon problème, ou au moins savoir comment m'y prendre, où aller, bref vos points de vue.
kiss =D