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 :

faire défiler une image


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 9
    Points : 4
    Points
    4
    Par défaut faire défiler une image
    Bonjour,
    j'aimerais faire défiler une image à l'aide des touche du clavier mais mon code ne fonctionne, en mettant mon code a part celui ci fonctionne mais quand il est à l'intérieur du programme il ne fonctionne pas.

    Voici mon code:

    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    from tkinter import *
    from random import randrange
     
    # Création de la commande Echap
    def clavier(event):
        global coords
        touche = event.keysym
     
        can.delete(ALL)
     
        sprite_wall = can.create_image(0, 0, anchor = NW, image = fond)
     
        cmd = [[270, 450, bexit, "quitt", quitt],
               [270, 400, bcont, "bcont", cont],
               [270, 350, bstart, "bstart", start]]
     
        for elt in cmd :
            can.create_image(elt[0], elt[1], image=elt[2], tag=elt[3])
            can.tag_bind(elt[3], "<Button-1>", elt[4])
     
        fen1.mainloop()
     
     
    #Fonction quitter   
    def quitt(event):
     
        fen1.destroy()
     
    #Fonction du menu controls
    def cont(event):
        can.delete(ALL)
     
        can.create_image(0, 0, anchor = NW, image = photo)
        can.focus_set()
        can.bind("<Escape>", clavier)
     
        fen1.mainloop()
     
    #niveau 1
    def niv1(event):
        can.delete(ALL)
        x,y=0,0
        level1=can.create_image(x,y, image=photoniv1)
     
        fen1.bind("<Right>", droite)
        fen1.bind("<Left>", gauche)
     
     
        fen1.mainloop()
     
    def droite(event) :
     global x
     
     
     x=x+5
     can.coords(level1,x,y)
     can.itemconfig(level1,image=photoniv1)
     
     
    def gauche(event) :
     global x
     
     
     x=x-5
     can.coords(level1,x,y)
     can.itemconfig(level1,image=photoniv1)
     
     
     
     
     
    #menu start
    def start(event):
        can.delete(ALL)
     
        can.create_image(0, 0, anchor = NW, image = fondniveauselect)
     
    #Creation des boutons de niveaux
        cmd = [[100, 100, bniv1, "bniv1"],
               [270, 100, bniv2, "bniv2"],
               [440, 100, bniv3, "bniv3"],
               [100, 270, bniv4, "bniv4"],
               [270, 270, bniv5, "bniv5"],
               [440, 270, bniv6, "bniv6"],
               [100, 440, bniv7, "bniv7"],
               [270, 440, bniv8, "bniv8"],
               [440, 440, bniv9, "bniv9"]]
     
        for elt in cmd :
            can.create_image(elt[0], elt[1], image=elt[2], tag=elt[3])
            can.tag_bind(elt[3], "<Button-1>", niv1)
     
     
        can.focus_set()
        can.bind("<Escape>", clavier)
     
        fen1.mainloop()
     
     
     
    #Creation de la fenetre
    fen1 = Tk()
    #Creation du titre de la fenetre
    fen1.title('Les Bros')
     
    #Importation des images
    fond = PhotoImage(file="menu.gif")
    bexit = PhotoImage (file="exit.gif")
    bcont = PhotoImage (file="controls.gif")
    bstart = PhotoImage (file="startgame.gif")
    photo = PhotoImage(file="fondcontrols.gif")
    photoniv1 = PhotoImage(file="niveau1.gif")
    fondniveauselect = PhotoImage(file="fondniveauselect.gif")
    bniv1 = PhotoImage (file="selectniv1.gif")
    bniv2 = PhotoImage (file="selectniv2.gif")
    bniv3 = PhotoImage (file="selectniv3.gif")
    bniv4 = PhotoImage (file="selectniv4.gif")
    bniv5 = PhotoImage (file="selectniv5.gif")
    bniv6 = PhotoImage (file="selectniv6.gif")
    bniv7 = PhotoImage (file="selectniv7.gif")
    bniv8 = PhotoImage (file="selectniv8.gif")
    bniv9 = PhotoImage (file="selectniv9.gif")
     
    #Creation du canvas principal
    can = Canvas(fen1, width = 540, height = 540)
    can.pack()
     
    sprite_wall = can.create_image(0, 0, anchor = NW, image = fond)
     
     
    #Creation des boutons principaux
    cmd = [[270, 450, bexit, "quitt", quitt],
           [270, 400, bcont, "bcont", cont],
           [270, 350, bstart, "bstart", start]]
     
    for elt in cmd :
        can.create_image(elt[0], elt[1], image=elt[2], tag=elt[3])
        can.tag_bind(elt[3], "<Button-1>", elt[4])
     
     
     
     
    fen1.mainloop()
    Et le code qui fonctionne mais dans la fenêtre de base:

    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
    from tkinter import *
    import random
    fen1=Tk()
    fen1.title("niveau1")
    fen1.geometry("540x540")
     
     
    can=Canvas(fen1,width=540,height=540,bg="white")
    can.place(x=0,y=0)
     
     
     
     
    def droite(evt) :
     global x
     x=x+5
     can.coords(level1,x,y)
     can.itemconfig(level1,image=photoniv1)
    def gauche(evt) :
     global x
     x=x-5
     can.coords(level1,x,y)
     can.itemconfig(level1,image=photoniv1)
     
     
     
     
    x,y=1620,270
    photoniv1=PhotoImage(file='niveau1.gif')
     
    level1=can.create_image(x,y, image=photoniv1)
     
     
    fen1.bind("<Right>", droite)
    fen1.bind("<Left>", gauche)
    fen1.mainloop()
    Merci de vos réponses.

  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,

    Citation Envoyé par xbp28 Voir le message
    j'aimerais faire défiler une image à l'aide des touche du clavier mais mon code ne fonctionne, en mettant mon code a part celui ci fonctionne mais quand il est à l'intérieur du programme il ne fonctionne pas.
    Il ne "fonctionne pas"?
    Voilà qui est fort vague... Ça sort un message d'erreur? Ça ne fait pas ce que vous voulez?
    Si pour comprendre il faut exécuter votre code, il manque des bouts (les images, la séquence d'actions à effectuer,...)

    - W
    PS: Vu votre code, il manque certainement des "global"... mais cela sort un message d'erreur explicite.
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    J'ai en message d'erreur, comme quoi x et level1 ne sont pas défini mais je les défini dans la def niv1

    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
    def niv1(event):
        can.delete(ALL)
        x,y=0,0
        level1=can.create_image(x,y, image=photoniv1)
     
        fen1.bind("<Right>", droite)
        fen1.bind("<Left>", gauche)
     
     
     
        fen1.mainloop()
     
    def droite(event) :
     global x
     print(droite)
     
     
     x=x+5
     can.coords(level1,x,y)
     can.itemconfig(level1,image=photoniv1)
     
     
    def gauche(event) :
     global x
     
     
     x=x-5
     can.coords(level1,x,y)
     can.itemconfig(level1,image=photoniv1)

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Si je définie x et level1 dans les def droite et gauche, le programme déplace l'image de 5 a droite et de -5 a gauche, mais il ne fait pas défilé l'image

  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 xbp28 Voir le message
    Si je définie x et level1 dans les def droite et gauche, le programme déplace l'image de 5 a droite et de -5 a gauche, mais il ne fait pas défilé l'image
    Je ne sais pas ce que vous entendez par "faire défiler l'image". En tous cas, votre code ne fait rien d'autre que déplacer à droite ou à gauche... Et si vous relisez votre premier post, ce déplacement semblait correspondre à vos attentes.

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

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Oui si on veux sauf que le déplacement ne marche pas comme je le souhaite, car mon image étant plus grande que le canvas, j'aurais voulu qu'en appuyant sur la touche droite ou gauche l'image se déplace en continu de 5 en 5, ce qui n'est absolument pas le cas avec le code actuelle, mon problème vient du faite que je n'arrive pas a coder dans 2 def a la fois alors que dans le code qui fonctionne je code seulement dans la fenetre principal et pas dans une def

Discussions similaires

  1. Faire défiler une image en fondu
    Par Drakalex007 dans le forum Développement iOS
    Réponses: 5
    Dernier message: 26/03/2014, 20h55
  2. Faire défiler une image
    Par Alba.1337 dans le forum AWT/Swing
    Réponses: 0
    Dernier message: 20/03/2012, 21h06
  3. Faire défiler une image dans un ScrollBox
    Par Duan dans le forum Débuter
    Réponses: 4
    Dernier message: 06/06/2011, 00h55
  4. faire défiler des images sur une ligne
    Par ploufleouf74 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/09/2010, 18h54
  5. Comment faire défiler une image dans un DBImage
    Par kolac dans le forum Bases de données
    Réponses: 1
    Dernier message: 08/04/2006, 13h45

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