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 à l'essai
    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
    Points : 17
    Points
    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 éclairé
    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
    Points : 779
    Points
    779
    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 à l'essai
    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
    Points : 17
    Points
    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 : 48
    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
    Points : 891
    Points
    891
    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 à l'essai
    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
    Points : 17
    Points
    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 : 48
    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
    Points : 891
    Points
    891
    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 à l'essai
    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
    Points : 17
    Points
    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