Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 wink
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