clic et logique booléenne avec tkinter - Python - Programmation
Marsh Posté le 10-03-2014 à 18:49:34
1. L'indentation de ton code est toute foireuse, c'est incompréhensible
2. Le message d'erreur a pas l'air complet (il y a au moins une ligne qui manque)
3. dans le snippet 2, couleur n'est pas défini (global couleur ça définit rien du tout, ca dit juste que la fonction doit utiliser la variable globale en question, si elle n'existe pas ça va se vautrer)
4. dans le snippet 3, green n'est défini nulle part, je ne vois pas pourquoi ça fonctionnerait
5. avoir du code qui tourne c'est plus pratique pour tester/aider
6. itertools.cycle
7. utiliser code=python ça sort une meilleure coloration:
Code :
|
Marsh Posté le 10-03-2014 à 15:40:09
Bonjour,
En ce moment , j'utilise tkinter et je voudrais créer un rectangle en faisant create_rectangle(...,options) .Mais je bloque sur un exercice qui nous demande : que lors du premier clic , une fonction qui dessine le rectangle doit retourner un rectangle de couleur rouge, et lors du 2ème clic , un rectangle de couleur verte , ensuite au prochain clic , le rectangle rouge doit étre et aprés vert ....(et ainsi de suite ) .
J'ai pensé à la logigue booléenne , en initialisation une variable couleur , et l'incrémenter par la suite , en utilisant les conditions if , mais çà ne marche pas , je ne saisis pas le fonctionnement de tkinter et l'ampleur de l'argument event qui signifie évènement (pourtant , j'ai fait des heures de recherches)
Voilà mon bout de code , et petite précision (il y'a une fonction manager() qui regroupe la position du clic et la fonction dessiner() , mais le noyau dur c'est la fonction dessiner()) :
En quoi mon raisonnement est faux ? J'ai un autre code concernant la parité en fonction d'un compteur des rectangles , mais c'est encore pire
Une idée consisterait à retirer par le biais de l'index d'une genre le liste la couleur , en définissant à la base , un variable avec les deux couleurs :
COLORS = ('red', 'green')
def dessine(event):
global couleur
c.create_rectangle(x - d, y - d, x + d, y + d, fill=COLORS[couleur], outline="" )
Mais le shell dit que la variable couleur n'est pas définie , voilà le message que j'obtiens :
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1473, in __call__
return self.func(*args)
File "<stdin>", line 3, in manager
File "<stdin>", line 6, in dessine
Pourtant , lorsque j'écris aprés que couleur = 0 ou couleur = 1 , j'obtiens un carré de couleur rouge et aprés verte(çà fonctionne comme les index des listes avec COLORS[couleur]) mais justement ce n'est pas juste puisque c'est le clic de la souris qui doit déclencher l'action et non mon écriture sur le shell ...
_J'ai fait un autre test mais sans succés :