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 :

apparition de blancs dans le background


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    salarié poste
    Inscrit en
    Mai 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié poste

    Informations forums :
    Inscription : Mai 2016
    Messages : 16
    Par défaut apparition de blancs dans le background
    Bonjour !

    Dans la continuation de l'amélioration de mon petit jeu ce qui me donne l'occasion de travailler de nouveaux concepts et ou méthodes,
    j'ai implémenté deux images de fond qui défilent au même rythme que mes nuages.
    je souhaite par la suite créer une liste de plusieurs fonds qui seront appelés à la suite.
    Les deux premières images de fond se déplacent bien la troisième aussi mais ensuite il apparaît un blanc il manque une image ...
    je ne vois pas d'ou vient le problème.
    Pouvez vous m'éclairer ?
    Je vous en remercie
    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
    55
    56
    from tkinter import *
    import tkinter as tk
    from random import randint
     
    canvas = tk.Canvas(width=1600, height=800, bd=0, bg='skyblue')
    canvas.pack()
     
    liste_nuage =[]
    background ='background_snoopy.gif'
    backgroundgrass ='background_grass.gif'
    imgfile1 = 'nuage1.gif'
    gifsdict={}
    img1 = PhotoImage(file = imgfile1)
    ground = PhotoImage(file = background)
    grass = PhotoImage(file = backgroundgrass)
    gifsdict[imgfile1] = img1
    gifsdict[background] = ground
    gifsdict[backgroundgrass] = grass
     
    sol = canvas.create_image(0,650,anchor=NW,image=ground)
    sol2 = canvas.create_image(1600,650,anchor=NW,image=grass)
     
    for i in range(6):
     
     
        nuage = canvas.create_image(randint(1500,2200),randint(0,300),anchor=NE,image=img1)
        liste_nuage.append(nuage)
     
    def deplacementsol():
     
        if canvas.coords(sol)[0]+1600<=0:
                canvas.coords(sol,1600,650)
     
        if canvas.coords(sol2)[0]+3200<=0:
                canvas.coords(sol2,3200,650)  
        else:
            canvas.move(sol2, -20, 0)
            canvas.move(sol, -20, 0)
     
        canvas.after(50,deplacementsol)
     
    def deplacementnuages():
        for nuage in liste_nuage[:]:
     
            if canvas.coords(nuage)[0]<=-100:
                canvas.coords(nuage,randint(1600,4000),randint(0,500))
     
            else:
                canvas.move(nuage, -20, 0)
        canvas.after(50,deplacementnuages)
     
     
     
    deplacementnuages()
    deplacementsol()
    tk.mainloop()
    Fichiers attachés Fichiers attachés

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

    Citation Envoyé par mika34770 Voir le message
    je ne vois pas d’où vient le problème.
    Relisez votre code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def deplacementsol():
     
        if canvas.coords(sol)[0]+1600<=0:
                canvas.coords(sol,1600,650)
     
        if canvas.coords(sol2)[0]+3200<=0:
                canvas.coords(sol2,3200,650)  
        else:
            canvas.move(sol2, -20, 0)
            canvas.move(sol, -20, 0)
     
        canvas.after(50,deplacementsol)
    C'est quoi l'idée? Une image suivie d'une autre image. A chaque itération, on les déplace sur la gauche. Si l'image la plus à gauche n'est plus visible, on la déplace vers la droite, à la suite de la dernière image.
    Raconté comme çà, vous devriez pouvoir constater qu'il n'y a pas de raison de traiter une image différemment des autres.

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

  3. #3
    Membre averti
    Homme Profil pro
    salarié poste
    Inscrit en
    Mai 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié poste

    Informations forums :
    Inscription : Mai 2016
    Messages : 16
    Par défaut
    Et comme toujours ... Merci Wiztricks !
    Un petit cou de pied au fesses pour remettre les neurones en place,
    un petit schéma sur un papier deux bouts de feuilles qui glissent et on pige

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def deplacementsol():
     
        if canvas.coords(sol)[0]+1600<=0:
                canvas.coords(sol,1600,650)
     
        if canvas.coords(sol2)[0]+1600<=0:
                canvas.coords(sol2,1600,650)  
        else:
            canvas.move(sol2, -20, 0)
            canvas.move(sol, -20, 0)
     
        canvas.after(50,deplacementsol)
    A la revoyure !

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

    Efforcez vous de faire des boucles plutôt que "répéter":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def deplacementsol():
        for z in (sol, sol2):
            if canvas.coords(z)[0]+1600<=0:
                canvas.coords(z,1600,650)
            canvas.move(z, -20, 0)
        deplacementsol()
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre averti
    Homme Profil pro
    salarié poste
    Inscrit en
    Mai 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié poste

    Informations forums :
    Inscription : Mai 2016
    Messages : 16
    Par défaut
    Merci pour votre conseil que j'appliquerai systématiquement et pour l'exemple de code qui illustre vos propos

    c'est en effet bien mieux d'autant plus que je voudrais utiliser 5 ou 6 sols retravaillés graphiquement.

    je reviendrai vers vous certainement :p

    Bien cordialement

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/11/2005, 16h02
  2. Pb de blancs dans utilisation fonction FtpFindFirstFile
    Par AlvinTheMaker dans le forum MFC
    Réponses: 2
    Dernier message: 06/04/2005, 12h33
  3. Réponses: 3
    Dernier message: 31/01/2005, 23h18
  4. [LG]Retirer les blancs dans une chaine
    Par Andy_24DB dans le forum Langage
    Réponses: 16
    Dernier message: 25/02/2004, 16h30
  5. Réponses: 4
    Dernier message: 18/11/2003, 16h08

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