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 :

Items de List pas possibilité affichage séquentiel dans un Label


Sujet :

Tkinter Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 13
    Points : 9
    Points
    9
    Par défaut Items de List pas possibilité affichage séquentiel dans un Label
    Bonjour,

    J'essaie d'afficher les items d'une List dans un Label de façon séquentiel avec un Bouton mais seul l'item[0] s'affiche et je ne vais pas plus loin.
    J'ai utilisé un exemple simple, mais je ne comprend pourquoi la liste ne s'incrémente pas dans le Label, je suis sûr qu'il ya juste un détail qui m'a échappé, mais quoi ?
    Je mets ce petit programme en suivant,

    Merci pour votre aide

    Jeangil


    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
    import tkinter as tk
     
    global words
    index = -1
     
    words = ["truc", "bidule", "machin", "chose", "ballon", "voiture", "chat", "maison",
         "velo", "moto", "table"]
     
     
    def on_click(display):
      global index
      index = index + 1
     
      if (index >= len(words)):  
        index = 0
     
      display.config(text=(words[index]))
     
    #------------------------------------------------------------------
    #main window
    #------------------------------------------------------------------
    root=tk.Tk()
     
     
    label1 = tk.Label(text=(words[index]))
    label1.pack()
    bouton1 = tk.Button(text="OK", command = on_click(label1))
    bouton1.pack()
     
    root.mainloop()

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 313
    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 313
    Points : 36 819
    Points
    36 819
    Par défaut
    Salut,

    Citation Envoyé par jeangil Voir le message
    je suis sûr qu'il ya juste un détail qui m'a échappé, mais quoi ?
    command=... attend une fonction à appeler. on_click(label1) appelle la fonction (çà marche un fois) et assigne son retour (=None) à command.
    Ecrivez command=on_click et supprimez le paramètre...

    - W

  3. #3
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 886
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 886
    Points : 3 725
    Points
    3 725
    Par défaut
    Salut,

    Si tu fais ce que wiztricks a suggéré il faudra alors supprimer le paramètre "display" et remplacer display.config(text=(words[index])) par label1.config(text=(words[index]))...

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    Désolé de ne pas avoir répondu plus tôt,
    J'ai essayé la solution de Wiztricks mais rien ne change, les items ne s'incrémentent pas plus dans le label.
    J'ai tenté en plus la suggestion de Beginner, mais là, j'ai un msg d'erreur -> il me demande un argument pour on_click (cf ci-dessous)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Exception in Tkinter callback
    Traceback (most recent call last):
      File "C:\Users\Utilisateur\AppData\Local\Programs\Python\Python38\lib\tkinter\__init__.py", line 1883, in __call__
        return self.func(*args)
    TypeError: on_click() missing 1 required positional argument: 'display'
    Si vous avez une autre idée ?
    En tout cas merci quand même

    Jeangil

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 313
    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 313
    Points : 36 819
    Points
    36 819
    Par défaut
    Salut,

    Citation Envoyé par jeangil Voir le message
    Si vous avez une autre idée ?
    En tout cas merci quand même
    Si vous avez des difficultés à traduire en code nos suggestions, c'est que les notions de variables, portée, fonctions, arguments restent à acquérir.
    Dommage car si vous vous attaquez à tkinter sans trop maîtriser ces notions, vous allez juste patauger.

    Ci dessous un code qui marche:

    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
    import tkinter as tk
     
    words = ["truc", "bidule", "machin", "chose", ]
    index = 0
     
    def on_click():
      global index
     
      index = (index + 1) % len(words)
      label1.config(text=(words[index]))
     
     
    root=tk.Tk()
    label1 = tk.Label(text=(words[index]))
    label1.pack()
    tk.Button(text="OK", command = on_click
              ).pack()
     
    root.mainloop()

    - W

Discussions similaires

  1. [Google Maps] Chgt API, pas d'affichage carte dans Iframe
    Par chanteur06 dans le forum APIs Google
    Réponses: 1
    Dernier message: 28/11/2017, 09h44
  2. Pas d'affichage dans liste dynamique d'images
    Par samson_02 dans le forum Langage
    Réponses: 5
    Dernier message: 24/02/2012, 10h31
  3. [SP 2007 / Débutant] Ajout d'items à une liste et affichage dans une DGV par prog'
    Par Ikki_2504 dans le forum Développement Sharepoint
    Réponses: 2
    Dernier message: 27/05/2011, 17h11
  4. [OL-2003] Pas d'affichage image dans HTMLBody = SourceHTML
    Par ananar dans le forum VBA Outlook
    Réponses: 4
    Dernier message: 08/09/2010, 11h43
  5. Package Listings : Pas d'affichage !
    Par GatH7614 dans le forum Mise en forme
    Réponses: 1
    Dernier message: 04/12/2009, 18h28

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