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 :

Problème avec la fonction .move [Python 3.X]


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Problème avec la fonction .move
    Bonjour,
    Je souhaite faire un jeu où il y des obstacle(il y a 3 types d'obstacles) qui se déplacent de droite à gauche, cependant je suis bloqué:
    j'arrive à faire apparaître les types d'obstacles de façons aléatoires mais ils ne se déplacent pas de gauche à droite, de plus je voudrais que l'apparition des différents types d'obstacle reste aléatoires tout a long du déplacement qui donc ne soit pas une chaîne d'obstacle constante qui se déplacent.
    J'espère que je me suis fait comprendre.
    Merci d'avance pour votre aide
    voici mon programme:
    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
    # -*-coding-utf8-*-
    from tkinter import *
    import random
    import time
    from threading import Thread
    def deplacement():
        global ObsItem 
        fond.move(ObsItem,-5,0)
        fond.after(5,deplacement)
     
    def choixObs():
        global ObsItem, x0
        ObsItem=[]
        for i in range(9):
            n=random.randint(1,3)
            if n==1:
                pts_1 = [(x0,300),(x0+20,260),(x0+40,300),(x0,300)]
                Obs=fond.create_polygon(pts_1, fill='black', outline='red', width=3)
            elif n==2:
                pts_2 = [(x0,220),(x0+40,220),(x0+40,240),(x0+20,280),(x0,240),(x0,220)]
                Obs=fond.create_polygon(pts_2, fill='black', outline='red', width=3)
            else:
                pts_3 = [(x0,300),(x0,260),(x0+20,220),(x0+40,260),(x0+40,300),(x0,300),(x0,260),(x0+40,300)]
                Obs=fond.create_polygon(pts_3, fill='black', outline='red', width=3)
            x0-=40
            ObsItem.append(Obs)
        deplacement()   
     
     
    fenetre=Tk()
    fenetre.geometry("300x300")
    fond=Canvas(fenetre, width=360, height=300, bg="white")
    fond.grid()
    x0=320
    choixObs()
    fenetre.mainloop()

  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 776
    Points
    36 776
    Par défaut
    Salut,

    Dans votre code, ObsItem est une liste d'identifiants d'items.
    Or fond.move(ObsItem,-5,0) n'accepte qu'un identifiant d'item ou un tag.
    Donc çà ne peut pas fonctionner... mais vous pouvez créer une boucle "for" et déplacer chaque item de la liste ou ouvrir la documentation du Canvas pour voir comment utiliser les tags dans ce cas là.

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

  3. #3
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci de votre réponse mais je n'y arrive toujours pas!! J'ai essayé d'appeler qu'un item avec la fonction for que vous m'avez conseillé mais cela ne fonctionne pas
    Je vous fait part de ce que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i in range(1,9):
            fond.move(ObsItem[i],-5,0)
            fond.update()

  4. #4
    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 776
    Points
    36 776
    Par défaut
    Citation Envoyé par plut0n Voir le message
    Merci de votre réponse mais je n'y arrive toujours pas!! J'ai essayé d'appeler qu'un item avec la fonction for que vous m'avez conseillé mais cela ne fonctionne pas
    Je vous fait part de ce que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i in range(1,9):
            fond.move(ObsItem[i],-5,0)
            fond.update()
    Si je reporte cela dans le code précédent, çà fonctionne très bien...
    Postez plus de code pour qu'on voit ce que vous avez fait (et où)...

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

  5. #5
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Ah oui erreur de ma part. Merci pour votre aide.

  6. #6
    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 776
    Points
    36 776
    Par défaut
    Citation Envoyé par plut0n Voir le message
    Ah oui erreur de ma part. Merci pour votre aide.
    ah ben oui, il faut y croire...
    Un petit exemple avec des tags?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    from tkinter import Canvas
     
    w = Canvas(width=500, height=500)
    w.pack()
     
    for x in range(25, 500, 50):
        w.create_rectangle(x, x, x+10, x+10, tag='objects')
    w.bind('<1>', lambda e: w.move('objects', 5, 0))
    w.mainloop()
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

Discussions similaires

  1. Problème avec une fonction date.
    Par kmayoyota dans le forum ASP
    Réponses: 8
    Dernier message: 09/09/2004, 12h33
  2. Problème avec la fonction findfirst ()
    Par Angelico dans le forum Windows
    Réponses: 3
    Dernier message: 05/08/2004, 20h40
  3. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 13h24
  4. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 12h06
  5. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04

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