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 :

Mouvement de plusieurs objets


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 3
    Par défaut Mouvement de plusieurs objets
    Bonjour,

    Je développe un programme dans le cadre de mon projet informatique pour mon concours. Le but actuel est de placer des pions sur un plateau de jeu. J'ai réussi à générer les pions dans la fenêtre et les placer sous la grille. J'ai ensuite un programme qui permet de les déplacer avec les touches du clavier :

    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
     def mouvement(event):
        """ Gestion de l'événement Appui sur une touche du clavier """
        global PosX,PosY #Prend le centre du carré + global sert à chercher notre variable partout dans le prg
        touche = event.keysym
        print(touche)
        # déplacement vers le haut
        if touche == 'Up':
            PosY -= 40
        # déplacement vers le bas
        if touche == 'Down':
            PosY += 40
        # déplacement vers la droite
        if touche == 'Right':
            PosX += 40
        # déplacement vers la gauche
        if touche == 'Left':
            PosX -= 40
        # le pion prend ses nouvelles coordonées
        can.coords(rectangle,PosX -20, PosY -20, PosX +20, PosY +20)
        can.coords(texte,PosX,PosY)
    Inexplicablement, le programme fait bouger seulement le dernier pion généré.
    Nom : Plateau photo.png
Affichages : 1015
Taille : 24,6 Ko

    Comment est-il possible d'utiliser cette fonction pour placer un autre bouton ?

    Merci pour votre aide.

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Dans ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        can.coords(rectangle,PosX -20, PosY -20, PosX +20, PosY +20)
    où est définit rectangle ?

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 3
    Par défaut
    Ils sont définis plus tôt dans mon canvas avec create :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     for i in range(len(M)):
        rectangle=can.create_rectangle(40*(4+i),40*15,40*(4+i+1),40*(15+1),fill=couleur7,outline="black")
        texte=can.create_text(40*(4+i)+20,40*15+20,text=M[i])
    can.bind('<Key>',mouvement)
    Sachant que M est la liste des lettres à placer dans les pions.

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

    Ben relisez votre code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     for i in range(len(M)):
        rectangle=can.create_rectangle(40*(4+i),40*15,40*(4+i+1),40*(15+1),fill=couleur7,outline="black")
        texte=can.create_text(40*(4+i)+20,40*15+20,text=M[i])
    can.bind('<Key>',mouvement)
    à la sortie de la boucle, les variables rectangle et texte ne contiendront que les derniers items retournés par .create_rectangle et create_text. Pour bouger les différents rectangles, il va falloir stocker les M rectangles dans une liste (ou autre) puis savoir à quel rectangle correspond quel identifiant.

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

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 3
    Par défaut
    Comment est-ce qu'il est possible de stocker les rectangles dans une liste? Je n'ai pas bien compris les histoires d'identifiant...

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

    Citation Envoyé par Alaiis Voir le message
    Comment est-ce qu'il est possible de stocker les rectangles dans une liste? Je n'ai pas bien compris les histoires d'identifiant...
    Pour les identifiants des items d'un Canvas, il faut prendre le temps de lire un peu la documentation.

    Ajouter des objets dans une liste se fait via .append.... mais comme vous n'avez pas pensé votre application pour travailler avec plusieurs "pions" / "rectangle" çà ne va pas vous avancer beaucoup.

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

Discussions similaires

  1. appeller plusieurs objets
    Par alex01pernot dans le forum Delphi
    Réponses: 2
    Dernier message: 08/10/2006, 12h42
  2. [C#] Plusieurs objets en Remoting
    Par davestar dans le forum Windows Forms
    Réponses: 2
    Dernier message: 24/07/2006, 15h04
  3. m3g : utilisation de plusieurs objets en même temps
    Par chabfive dans le forum Développement Mobile en Java
    Réponses: 1
    Dernier message: 23/06/2006, 14h00
  4. Requêtes : recherche de maxi sur plusieur Objet
    Par pertuis dans le forum Langage SQL
    Réponses: 6
    Dernier message: 08/03/2004, 15h28
  5. Comment mettre plusieurs objets ds un composant ?
    Par Fleury dans le forum Composants VCL
    Réponses: 7
    Dernier message: 24/05/2003, 17h34

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