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

Python Discussion :

Défilement D'images sur Tkinter [Python 3.X]


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Défilement D'images sur Tkinter
    Bonjour,

    Étant en classe de terminale en spécialité ISN j'aurai besoin de créer un défilement d'images (avec un delai de 4s) sous Tkinter
    le soucis c'est que je n'ai pas le droit d'utiliser de la programmation objet (fonction class par exemple), je dois aller au plus simple.

    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
     
    from tkinter import *
    import tkinter as tk
    import random ## Pour l'exemple
     
    fenetre = tk.Tk()
    label = tk.Label(fenetre)
    label.pack()
     
    im1=PhotoImage(file='mateo.gif')
    im2=PhotoImage(file='josie.gif')
    im3=PhotoImage(file='lilou.gif')
    im4=PhotoImage(file='theo.gif')
     
    choixim = ['mateo.gif','josie.gif','lilou.gif','theo.gif']
     
     
    def defilement():
        ## Choisit les images aléatoirement.
        rand_im = random.choice(choixim)
     
     
        ## Configure le label, avec nouvelles options
        label.configure(image=choixim)
     
        ## Répète la fonction encore et encore..
        fenetre.after(4000, defilement)
     
    ## Appele la fonction une seule fois,
    ## Ensuite, le after(), va re-exécuter la fonction encore et encore.
    defilement()
     
     
     
    fenetre.mainloop()
    voici mon code, cependant j'ai une fenêtre d'erreur me disant que les images (mateo,lilou,theo et josie) n'existent pas...
    Pouvez-vous m'aider SVP¨.

  2. #2
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    Salut,

    Pourriez vous mettre le message d'erreur que vous obtenez.

  3. #3
    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,

    lignes 10-13, vous créez des PhotoImage et assignez le résultat dans des variables im1, im2,...
    ligne 15: vous créez choixim, liste de chaîne de caractères... (que deviennent im1, im2, ....)
    ligne 20: rand_im récupère une de ces chaînes de caractères via random.choice.
    ligne 24: plutôt que de passer rand_im (qui n'est pas bon mais çà serait cohérent) vous passez la liste...

    Il ne suffit pas d'écrire des lignes de code, il faut prendre le temps de les relire et de s'assurer que çà a quelques chances de faire ce que vous attendez (que la machine fasse pour vous). Et si vous vous lancez dans la programmation d'une interface graphique sans avoir acquis cette rigueur là, on ne peut pas faire grand chose pour vous.

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

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par nekcorp Voir le message
    Salut,

    Pourriez vous mettre le message d'erreur que vous obtenez.
    File "H:\Projet Programme de rencontre\test.py", line 30, in <module>
    defilement()
    File "H:\Projet Programme de rencontre\test.py", line 23, in defilement
    label.configure(image=choixim)
    File "C:\Users\Kentaroooooooo\AppData\Local\Programs\Python\Python35-32\lib\tkinter\__init__.py", line 1330, in configure
    return self._configure('configure', cnf, kw)
    File "C:\Users\Kentaroooooooo\AppData\Local\Programs\Python\Python35-32\lib\tkinter\__init__.py", line 1321, in _configure
    self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
    _tkinter.TclError: image "mateo.gif josie.gif lilou.gif theo.gif" doesn't exist

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    lignes 10-13, vous créez des PhotoImage et assignez le résultat dans des variables im1, im2,...
    ligne 15: vous créez choixim, liste de chaîne de caractères... (que deviennent im1, im2, ....)
    ligne 20: rand_im récupère une de ces chaînes de caractères via random.choice.
    ligne 24: plutôt que de passer rand_im (qui n'est pas bon mais çà serait cohérent) vous passez la liste...

    Il ne suffit pas d'écrire des lignes de code, il faut prendre le temps de les relire et de s'assurer que çà a quelques chances de faire ce que vous attendez (que la machine fasse pour vous). Et si vous vous lancez dans la programmation d'une interface graphique sans avoir acquis cette rigueur là, on ne peut pas faire grand chose pour vous.

    - W
    Désole je suis vraiment novice dans la matière et c'est pour cela que je suis venu vous demander de l'aide car je sais que je suis mauvais...
    Mais de ce fait je ne comprends tjr pas la dernière ligne de votre explication

  6. #6
    Membre confirmé

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Points : 503
    Points
    503
    Billets dans le blog
    1
    Par défaut
    Ici, tu choisis un élément dans ta liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ## Choisit les images aléatoirement.
        rand_im = random.choice(choixim)
    Et là, tu passes ta liste comme paramètre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ## Configure le label, avec nouvelles options
        label.configure(image=choixim)
    Ce qui aurait été cohérent est que tu passes, rand_im, mais ça n'ira pas non plus car cela est un str, et image à besoin d'un objet Phootimage, donc ton choice doit s'effectuer sur tes img1, ... img4, à fourrer dans une liste évidemment.
    Le temps ronge l'amour comme l'acide.

  7. #7
    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
    Citation Envoyé par YokAtom Voir le message
    Désole je suis vraiment novice dans la matière et c'est pour cela que je suis venu vous demander de l'aide car je sais que je suis mauvais...
    Mais de ce fait je ne comprends tjr pas la dernière ligne de votre explication
    Si vous ne comprenez pas que les instructions que vous tapez doivent constituer une séquence cohérente, c'est que vous vous lancez à faire des choses bien trop compliquées avant d'avoir pris le temps d'assimiler les bases (de la programmation).
    Et pour assimiler ces bases, c'est à vous de prendre le temps d'ouvrir un tuto.... De bons tutos, c'est la première aide que vous trouvez ici.
    C'est sûr que çà ne suffira pas mais il y a une différence entre donner un coup de pouce à quelqu'un qui a mal compris un concept et aider ceux qui n'imaginent même pas qu'il y a un minimum de concepts et de bases à acquérir avant de vouloir coder (même des choses simples).

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

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par bistouille Voir le message
    Ici, tu choisis un élément dans ta liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ## Choisit les images aléatoirement.
        rand_im = random.choice(choixim)
    Et là, tu passes ta liste comme paramètre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ## Configure le label, avec nouvelles options
        label.configure(image=choixim)
    Ce qui aurait été cohérent est que tu passes, rand_im, mais ça n'ira pas non plus car cela est un str, et image à besoin d'un objet Phootimage, donc ton choice doit s'effectuer sur tes img1, ... img4, à fourrer dans une liste évidemment.
    Mmmmh je vois dans ce cas c'est pas si compliqué mais le soucis désormais c'est que il y a encore un message d'erreur qui s'active...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TypeError: object of type 'PhotoImage' has no len()
    Voici mon code pour que ca soit plus clair
    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
     
    from tkinter import *
    import tkinter as tk
    import random 
     
    fenetre = tk.Tk()
    label = tk.Label(fenetre)
    label.pack()
     
    im1=PhotoImage(file='mateo.gif')
    im2=PhotoImage(file='josie.gif')
    im3=PhotoImage(file='lilou.gif')
    im4=PhotoImage(file='theo.gif')
     
    choixim = [im1,im2,im3,im4]
     
     
    def defilement():
        ## Choisit les images aléatoirement.
        rand_im= random.choice(choixim)
     
     
        ## Configure le label, avec nouvelles options
        label.configure(rand_im)
     
        ## Répète la fonction encore et encore..
        fenetre.after(5, defilement)
     
    ## Appele la fonction une seule fois,
    ## Ensuite, le after(), va re-exécuter la fonction encore et encore.
    defilement()
     
    fenetre.mainloop()

  9. #9
    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
    Citation Envoyé par YokAtom Voir le message
    Mmmmh je vois dans ce cas c'est pas si compliqué mais le soucis désormais c'est que il y a encore un message d'erreur qui s'active...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TypeError: object of type 'PhotoImage' has no len()
    Lorsque vous recopiez bêtement du code et que çà ne fonctionne pas, la première chose à faire est de vérifier que vous avez recopié ces lignes correctement.

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

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Lorsque vous recopiez bêtement du code et que çà ne fonctionne pas, la première chose à faire est de vérifier que vous avez recopié ces lignes correctement.

    - W
    effectivement, désormais tout marche merci beaucoup a vous

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

Discussions similaires

  1. Problème texte/image sur Tkinter
    Par Dobbraga dans le forum Général Python
    Réponses: 2
    Dernier message: 15/05/2014, 11h56
  2. Défilement d'image sur deux lignes : Quel est ce script ?
    Par iluvatar75 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 19/10/2011, 15h16
  3. défilement des image sur un telephone portable
    Par jenimed dans le forum Java ME
    Réponses: 1
    Dernier message: 26/05/2009, 09h55
  4. Faire deux défilements d'images sur une même page
    Par ndsaerith dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 02/09/2007, 18h42
  5. Réponses: 10
    Dernier message: 07/06/2007, 10h48

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