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 :

Créer et modifier oval


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2017
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2017
    Messages : 99
    Par défaut Créer et modifier oval
    Bonjour à tous

    Je ne trouve pas ce qui ne va pas.

    Je souhaite créer une classe feux avec 3 méthodes: le constructeur , l'allumer rouge, l'allumer gris.

    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 *
     
    class feux:
        def __init__(self, nom_can, pos_x, pos_y, taille_x, taille_y):
            nom_can.create_oval(pos_x, pos_y, pos_x + taille_x, pos_y + taille_y, width=2, fill='grey')
     
        def allume_rouge(self, nom_can):
            nom_can.itemconfigure(self, fill='red')
     
    window = Tk()
     
    can1 = Canvas(window, bg='dark grey', height=330, width=400)
    can1.pack(expand="YES")
     
    feux1 = feux(can1, 30, 90, 50, 50)
    feux1.allume_rouge(can1)
     
    can1.update()
    window.update()
     
    window.mainloop()

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 756
    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 756
    Par défaut
    Salut,

    Citation Envoyé par tm68780 Voir le message
    Je souhaite créer une classe feux avec 3 méthodes: le constructeur , l'allumer rouge, l'allumer gris.
    Commencez avec de simples fonctions pour apprendre à utiliser les méthodes du Canvas. Quand çà marche, fabriquer une classe, c'est juste décider quelles variables globales transformer en attributs.

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

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2017
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2017
    Messages : 99
    Par défaut
    Oui j'ai essayé le create et le .configure avant de créer une classe.
    C'est la référence au canevas qui ne colle pas, le constructeur de la classe fonctionne lui

    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
    from tkinter import *
    import time
     
    class feux:
        #def __init__(self, nom_can, pos_x, pos_y, taille_x, taille_y):
        #    nom_can.create_oval(pos_x, pos_y, pos_x + taille_x, pos_y + taille_y, width=2, fill='grey')
        def __init__(self, nom_can):
            nom_can.create_oval(30, 30, 60, 60, width=2, fill='grey')
     
        def allume_rouge(self, nom_can):
            nom_can.itemconfigure(self, fill='red')
     
     
    window = Tk()
    window.title("Feux de départ")
    window.geometry("480x360")
    window.config(background="#41B77F")
     
    can1 = Canvas(window,bg='dark grey',height=330, width=400)
    can1.pack(expand="YES")
     
    #feux1 = can1.create_oval(30, 30, 60, 60, width=2, fill='grey')
    feux1 = feux(can1)
     
    #can1.itemconfigure(feux1, fill='red')
    #feux1.allume_rouge(can1)
     
    window.mainloop()

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 756
    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 756
    Par défaut
    Salut,

    Citation Envoyé par tm68780 Voir le message
    Oui j'ai essayé le create et le .configure avant de créer une classe.
    Si vous ne montrez pas ce que vous avez fait, on ne peut pas comparer.

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

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2017
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2017
    Messages : 99
    Par défaut
    C'était après les #

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    feux1 = can1.create_oval(30, 30, 60, 60, width=2, fill='grey')
    can1.itemconfigure(feux1, fill='red')
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class feux:
        def __init__(self, nom_can):
            nom_can.create_oval(30, 30, 60, 60, width=2, fill='grey')
     
        def allume_rouge(self, nom_can):
            nom_can.itemconfigure(self, fill='red')
     
    feux1 = feux(can1)
    feux1.allume_rouge(can1)

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 756
    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 756
    Par défaut
    Salut,

    Relisez votre code, can1.create_oval retourne un identifiant que vous passez à .itemconfigure...

    Et dans la mouture "classe", cet identifiant est ignoré.

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

  7. #7
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2017
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2017
    Messages : 99
    Par défaut
    Dans ce code Feux1 est du type INT

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    feux1 = can1.create_oval(30, 30, 60, 60, width=2, fill='grey')
    can1.itemconfigure(feux1, fill='red')
    Dans ce code feux1 est une instance de la classe feux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class feux:
        def __init__(self, nom_can):
            nom_can.create_oval(30, 30, 60, 60, width=2, fill='grey')
     
        def allume_rouge(self, nom_can):
            nom_can.itemconfigure(self, fill='red')
     
    feux1 = feux(can1)
    feux1.allume_rouge(can1)

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

Discussions similaires

  1. Créer ou modifier un shell avec interface python et le lancer
    Par jameson dans le forum Général Python
    Réponses: 11
    Dernier message: 26/08/2008, 09h59
  2. Créer ou modifier un dossier en fonction d'une valeur dans une cellule
    Par Pierre.g dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/08/2008, 17h37
  3. Réponses: 2
    Dernier message: 14/05/2008, 11h17
  4. Réponses: 6
    Dernier message: 21/09/2006, 16h08
  5. [JAVA] Lien expliquant comment créer/ lire / modifier un XML
    Par The_revival dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 07/12/2005, 17h10

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