#1 Le 29/06/2016, à 09:24
- totola
Tkinter: suppression de lignes dans un canvas
Bonjour,
il y a un truc que je ne comprends pas bien si j'écris le code suivant:
Def Connecter():
if retour[1].get() and retour[2].get(): #retour[1] et [2] sont liés à des cases à cocher
self.ligne1 = self.canvas_p.create_line(mes options...)
Def Deconnecter():
if retour[1].get() and retour[2].get():
self.canvas_p.delete(self.ligne1)
Tout marche bien la ligne est créée avec la première fonction et supprimée avec la deuxième lorsque les deux cases sont sélectionnées.
Maintenant mon code est un peu plus complexe du genre:
Def Connecter():
for i in range(1,nbr_postes):
for j in range(1,nbr_postes):
if retour[i].get() and retour[j].get():
self.ligne1 = self.canvas_p.create_line(mes_options avec i et j...)
Def Deconnecter():
if retour[1].get() and retour[2].get():
self.canvas_p.delete(self.ligne1)
Ici, la ligne est bien créée avec Connecter() mais Deconnecter() ne supprime pas la ligne.. La console ne renvoie aucune erreur en plus...
Quelqu'un a une idée?
Merci
Dernière modification par totola (Le 29/06/2016, à 09:27)
Hors ligne
#2 Le 29/06/2016, à 09:38
- pingouinux
Re : Tkinter: suppression de lignes dans un canvas
Bonjour,
Voici 2 pistes :
1) Tu testes retour[ i ] et retour[ j ] dans Connecter, et retour[ 1 ] et retour[ 2 ] dans Deconnecter.
2) Il y a une seule variable self.ligne1 pour tous les couples (i,j).
Hors ligne
#3 Le 29/06/2016, à 09:41
- totola
Re : Tkinter: suppression de lignes dans un canvas
Hum oui, il faudrait que je puisse créer quelque chose comme:
self.ligne[i][j] = self.canvas_p.create_line(mes options avec i et j...)
c'est possible ça?
Merci
Dernière modification par totola (Le 29/06/2016, à 09:42)
Hors ligne
#4 Le 29/06/2016, à 09:56
- pingouinux
Re : Tkinter: suppression de lignes dans un canvas
Tu peux tester avec un dictionnaire :
self.ligne={}
à utiliser ainsi
self.ligne[i,j] = self.canvas_p.create_line(mes options avec i et j...)
Hors ligne
#5 Le 29/06/2016, à 10:41
- totola
Re : Tkinter: suppression de lignes dans un canvas
Oui Merci! ça marche mais si je rajoute une commande
for i in range(1,nbr_postes):
for j in range(1,nbr_postes):
if retour[i].get() and retour[j].get():
print 'coucou'
self.ligne1 = self.canvas_p.create_line(mes_options avec i et j...)
Elle est executée 4 fois si je coche le coche les deux cases (ce qui est normal vu qu'il teste i et i, i et j, j et j, j et i.
Comment faire pour qu'il ne garde que i et j et pas les trois autres possibilités?
Merci
Hors ligne
#6 Le 29/06/2016, à 10:45
- pingouinux
Re : Tkinter: suppression de lignes dans un canvas
for i in range(1,nbr_postes):
for j in range(i+1,nbr_postes):
Hors ligne
#7 Le 29/06/2016, à 10:48
- totola
Re : Tkinter: suppression de lignes dans un canvas
Merci
j'étais juste en train de tester avec j sur range(i,nbr_postes)
Mais j'avais pas pensé au i+1
Merci encore
Hors ligne