IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

[Tkinter] Changer de couleur! [Fait]


Sujet :

Tkinter Python

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Par défaut [Tkinter] Changer de couleur!
    Salut tous le monde, je débute sur python et je suis bloqué car je n'arrive pas a changer la couleur de la balle a chaque virage!Comment faut-il faire ?
    C'est l'exercice 8,24 p 106 du livre de Gérard Swinnen "Apprendre à programmer avec Python"
    Merci de me répondre!




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    from Tkinter import *
    # définition des gestionnaires
    # d'événements :
    def move():
    "déplacement de la balle"
    global x1, y1, dx, dy, flag
    x1, y1 = x1 +dx, y1 + dy
    if x1 >210:
    x1, dx, dy = 210, 0, 15
    if y1 >210:
    y1, dx, dy = 210, -15, 0
    if x1 <10:
    x1, dx, dy = 10, 0, -15
    if y1 <10:
    y1, dx, dy = 10, 15, 0
    can1.coords(oval1,x1,y1,x1+30,y1+30)
    if flag >0:
    fen1.after(50,move) # => boucler après 50 millisecondes
    def stop_it():
    "arret de l'animation"
    global flag
    flag =0
    def start_it():
    "démarrage de l'animation"
    global flag
    if flag ==0: # pour ne lancer qu'une seule boucle
    flag =1
    move()
    #========== Programme principal =============
    # les variables suivantes seront utilisées de manière globale :
    x1, y1 = 10, 10 # coordonnées initiales
    dx, dy = 15, 0 # 'pas' du déplacement
    flag =0 # commutateur
    # Création du widget principal ("parent") :
    fen1 = Tk()
    fen1.title("Exercice d'animation avec Tkinter")
    # création des widgets "enfants" :
    can1 = Canvas(fen1,bg='dark grey',height=250, width=250)
    can1.pack(side=LEFT, padx =5, pady =5)
    oval1 = can1.create_oval(x1, y1, x1+30, y1+30, width=2, fill='red')
    bou1 = Button(fen1,text='Quitter', width =8, command=fen1.quit)
    bou1.pack(side=BOTTOM)
    bou2 = Button(fen1, text='Démarrer', width =8, command=start_it)
    bou2.pack()
    bou3 = Button(fen1, text='Arrêter', width =8, command=stop_it)
    bou3.pack()
    # démarrage du réceptionnaire d'évènements (boucle principale) :
    fen1.mainloop()
    Edité par Guigui_: Tag [Tkinter], balises [Code] et indentation à revoir. Merci

  2. #2
    Membre chevronné
    Avatar de richard
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2002
    Messages : 475
    Par défaut
    j'ai jeté un rapide coup d'oeil au source, il semble que la balle soit le canvas "oval1" dans ton script.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oval1 = can1.create_oval(x1, y1, x1+30, y1+30, width=2, fill='red')
    Elle possède une propriété "fill" qui a l'attribut "red". Pour changer la couleur, il suffit de remplacer 'red' par une variable, par exemple 'couleur'
    et d'affecter à la variable 'couleur' différentes valeurs selon ton critère (avec des if ou des for).

    A mon avis cela devrait marcher. Essaie toujours.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Par défaut
    merci de m'avoir répondu, mais le probléme n'est pas de changer la couleur de départ mais de la changer quand la boule passe à un virage, quelle est la méthode à appliqué pour atteindre l'objet déja cré!
    merci d'avance!

    def move():
    "déplacement de la balle"
    global x1, y1, dx, dy, flag
    x1, y1 = x1 +dx, y1 + dy
    if x1 >210:
    x1, dx, dy = 210, 0, 15
    ICI
    if y1 >210:
    y1, dx, dy = 210, -15, 0
    ICI
    if x1 <10:
    x1, dx, dy = 10, 0, -15
    ICI
    if y1 <10:
    y1, dx, dy = 10, 15, 0
    ICI
    can1.coords(oval1,x1,y1,x1+30,y1+30)
    if flag >0:
    fen1.after(10,move) # => boucler après 50 millisecondes

  4. #4
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut
    c'est simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    def move():
    "déplacement de la balle"
         global x1, y1, dx, dy, flag
         x1, y1 = x1 +dx, y1 + dy
         if x1 >210:
              x1, dx, dy = 210, 0, 15
              coul='red'
         if y1 >210:
              y1, dx, dy = 210, -15, 0
              coul='white'
         if x1 <10:
              x1, dx, dy = 10, 0, -15
              coul='blue'
         if y1 <10:
              y1, dx, dy = 10, 15, 0
              coul='green'
         can1.coords(oval1,x1,y1,x1+30,y1+30,fill=coul)
         if flag >0:
         fen1.after(10,move) # => boucler après 50 millisecondes

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Par défaut
    Merci encore d'avoir répondu mais j'avais déja essayé, il me marque

    coords() got an unexpected keyword argument 'fill'
    si je traduis, "la methode coords n'accepte pas le mot-clé "fill""
    Si vous avez trouvé donnez moi le script en entier!
    merci!

  6. #6
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut
    autant pour moi, je me suis planté.

    c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    canvas.itemconfigure(oval,fill=coul)
    a++

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Par défaut
    merci beaucoup!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 14/05/2004, 11h18
  2. [Forms] changer les couleurs
    Par Nounoursonne dans le forum Forms
    Réponses: 11
    Dernier message: 02/04/2004, 09h40
  3. [VB6]Changer la couleur d'une ligne d'un ListView
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 14/03/2003, 17h02
  4. Changer la couleur de fond de l'écran
    Par tnk dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 19/01/2003, 01h37
  5. Changer les couleurs de la palette avec du RGB
    Par le mage tophinus dans le forum x86 16-bits
    Réponses: 11
    Dernier message: 13/01/2003, 08h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo