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 :

Feux Rouges ou verts [Python 3.X]


Sujet :

Tkinter Python

  1. #1
    Membre régulier Avatar de RowanMayfair
    Femme Profil pro
    Développeuse Freelance
    Inscrit en
    Mars 2019
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeuse Freelance

    Informations forums :
    Inscription : Mars 2019
    Messages : 247
    Points : 89
    Points
    89
    Par défaut Feux Rouges ou verts
    Bonjour,

    (encore moi désolée. J'ai l'impression d'être sur une série d'exercices pour lesquels le cours ne m'a pas donné les connaissances nécessaires)

    C'est l'histoire de feux de circulations, qui sont soit rouges, soit verts.

    J'ai un bouton "changer" : à chaque fois que je clique dessus, la couleur des feux doit changer. Les feux deviennent rouges s'ils étaient verts, si on appuie de nouveau sur le bouton ils passent au vert, etc.....

    Mais je ne sais pas faire ça. J'ai cherché sur le net, ça ressemble finalement à un bouton on/off, mais je ne sais pas, avec 1 seul bouton, exécuter une commande dont la valeur de départ alterne.

    Merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 781
    Points
    36 781
    Par défaut
    Salut,

    Vous savez déjà bouger un "rond" lorsque vous cliquez sur un Button.
    Ici, il faut changer sa couleur.
    Ce qui devrait être facile pour un seul "rond".
    Et vous devriez avoir du code à poster si vous avez des difficultés pour le faire sur 2 paires de "ronds".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre éclairé
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 513
    Points : 700
    Points
    700
    Par défaut
    si cela peut vous donner une piste voici un exemple de switch on/off

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    a = True
    a = not a # a = False
    a = not a # a = True
    ...

  4. #4
    Membre régulier Avatar de RowanMayfair
    Femme Profil pro
    Développeuse Freelance
    Inscrit en
    Mars 2019
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeuse Freelance

    Informations forums :
    Inscription : Mars 2019
    Messages : 247
    Points : 89
    Points
    89
    Par défaut
    Oh oui du code à poster j'en ait
    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
    49
    50
    51
     
    #
    from tkinter import *
     
    def feux_pietons(couleur) :
        can.create_oval(75,425,100,450,fill=couleur)
        can.create_oval(900,250,925,275,fill=couleur)
     
    def feux_voitures(couleur) :
        can.create_oval(50,190,100,240,fill=couleur)
        can.create_oval(900,460,950,510,fill=couleur)
     
    def inverse() :
     
        if feux_voitures(couleur='red'):
            feux_voitures('red')
            feux_pietons('green')
        else : 
            feux_voitures('green')
            feux_pietons('red')
     
        if feux_pietons(couleur='red') :
            feux_pietons('red')
            feux_voitures('green')
        else  :
            feux_pietons('green')
            feux_voitures('red')
     
    fen = Tk()
     
    can = Canvas(fen,bg='gray75',width=1000,height=700)
    can.pack()
     
    route = can.create_rectangle(100,50,900,650,fill='gray40')
     
    feux_voitures('red')  # saisi choix de départ
     
    # dessin du passage piéton
    x1,x2 = 120,180
    i = 0
    while i < 800 :
        can.create_rectangle(x1+i,250,x2+i,450,fill='light yellow')
        i = i + 100
     
     
     
    bou = Button(fen,text='Changer',borderwidth=5,command=inverse)
    bou.pack(side=BOTTOM)
     
     
    fen.mainloop()
    là ça fait donc une jolie fenêtre, avec un passage piéton. Des feux piétons verts si les feux voitures sont rouges, et vice-versa.
    Mais mon bouton, il "applique" mes condition, à savoir si j'entre au départ une couleur de feux pour piétons ou voitures, il sait ce qu'il faut faire.

    Mais il ne sait malheureusement alterner le truc. Faut encore que je réfléchisse à la question peut-être. Je ne vois pas mais...peut-être je m'y suis "juste" mal prise.

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 781
    Points
    36 781
    Par défaut
    Salut,

    Citation Envoyé par RowanMayfair Voir le message
    Mais il ne sait malheureusement alterner le truc. Faut encore que je réfléchisse à la question peut-être. Je ne vois pas mais...peut-être je m'y suis "juste" mal prise.
    Déjà virez tout ce qui n'a rien à voir avec "changer la couleur d'un seul disque/rond", histoire de vous concentrer sur ce détail de la mécanique à mettre en place.
    Puis souvenez vous que c'est la couleur du disque qui doit être modifiée alors que vos fonctions feux_xyz créent un nouveau disque sur les anciens. Comme pour la balle qui rebondit, vous créez un disque et vous modifiez ce disque là.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre régulier Avatar de RowanMayfair
    Femme Profil pro
    Développeuse Freelance
    Inscrit en
    Mars 2019
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeuse Freelance

    Informations forums :
    Inscription : Mars 2019
    Messages : 247
    Points : 89
    Points
    89
    Par défaut
    J'ai arrangé mes feux de circulation

    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
    49
    50
    51
    52
    53
    54
    from tkinter import *
     
     
     
    def feux(x,y,d) :
        "fonction qui dessine les feux"
        can.coords(rond,x,y,x+d,y+d)
     
    def changer() :
        "fonction qui change les feux de couleurs"
        global x,y,d,a
        a = 0
        a = not a
        if a == 0: 
            feux(75,425,25)
            feux(900,250,25)
            feux(50,190,50)
            can.itemconfigure(rond,fill='red')
            feux(900,460,50)
            can.itemconfigure(rond,fill='red')
        if a == 1 :
            feux(75,425,25)
            can.itemconfigure(rond,fill='red')
            feux(900,250,25)
            can.itemconfigure(rond,fill='red')
            feux(50,190,50)
            feux(900,460,50)
     
    x,y,d = 0,0,0   
     
    fen = Tk()
     
    can = Canvas(fen,bg='gray75',width=1000,height=700)
    can.pack()
     
    # dessin de la route
    route = can.create_rectangle(100,50,900,650,fill='gray40')
     
    # dessin du rond symbolisant le feux de circulation
    rond = can.create_oval(x,y,x+d,y+d,fill='green')
     
    # dessin du passage piéton : 
    x1,x2 = 120,180
    i = 0
    while i < 800 :
        can.create_rectangle(x1+i,250,x2+i,450,fill='light yellow')
        i = i + 100
     
    # création du bouton pour changer les couleurs de feux
    bou = Button(fen,text='Changer',borderwidth=5,command=changer)
    bou.pack(side=BOTTOM)
     
     
    fen.mainloop()
    Par contre, ma fonction "changer", c'est pas gagné.
    Elle m'affiche seulement un gros feu rouge. Pourquoi un gros, et pourquoi rouge.....je ne sais pas.

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 781
    Points
    36 781
    Par défaut
    Salut,

    Citation Envoyé par RowanMayfair Voir le message
    Par contre, ma fonction "changer", c'est pas gagné.
    Elle m'affiche seulement un gros feu rouge. Pourquoi un gros, et pourquoi rouge.....je ne sais pas.
    Relisez votre code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def changer() :
        "fonction qui change les feux de couleurs"
        global x,y,d,a
        a = 0
        a = not a
    Est ce que la valeur de a va être différente à chaque fois?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        if a == 0: 
            feux(75,425,25)
            feux(900,250,25)
            feux(50,190,50)
            can.itemconfigure(rond,fill='red')
            feux(900,460,50)
            can.itemconfigure(rond,fill='red')
    Pour l'instant, il n'y a qu'un "rond" et il ne se déplace pas.
    Les appels à feux pour le repositionner ne servent à rien.

    Et si vous vous étiez concentré pour travailler sur le changement de couleur, vous auriez écrit:
    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
    from tkinter import *
     
    def changer():
        global color
     
        if color == 'red':
            color = 'green'
        elif color == 'green':
            color = 'red'
     
        canvas.itemconfigure(disque, fill=color)        
     
    root = Tk()
     
    canvas = Canvas(root)
    color = 'red'
    disque = canvas.create_oval(10, 10, 50, 50, fill=color)
    canvas.pack()
     
    Button(root, text='changer', command=changer).pack()
    mainloop()
    Pour changer la couleur d'un seul disque, c'est largement suffisant.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre régulier Avatar de RowanMayfair
    Femme Profil pro
    Développeuse Freelance
    Inscrit en
    Mars 2019
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeuse Freelance

    Informations forums :
    Inscription : Mars 2019
    Messages : 247
    Points : 89
    Points
    89
    Par défaut
    Je me suis en effet bêtement concentrée sur mes feux

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

Discussions similaires

  1. [projet] Commande de feux rouges
    Par DAUDET78 dans le forum Vos contributions VB6
    Réponses: 0
    Dernier message: 28/08/2014, 11h16
  2. [WD16] Barre rouge orange vert
    Par mubbes dans le forum WinDev
    Réponses: 14
    Dernier message: 21/03/2012, 09h45
  3. Petit voyant rouge ou vert dans userform
    Par perpitou dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/11/2011, 09h36
  4. BarGraph rouge et vert
    Par sympatique dans le forum Windows XP
    Réponses: 2
    Dernier message: 09/08/2009, 17h43
  5. feux rouges vs feux arrières de voiture
    Par BNS dans le forum Traitement d'images
    Réponses: 10
    Dernier message: 06/11/2007, 10h58

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