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 :

Remplissage d'un listbox


Sujet :

Tkinter Python

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 66
    Points : 45
    Points
    45
    Par défaut Remplissage d'un listbox
    Salut à tous (pour les tardifs ) !

    Je suis en train de faire joujou avec Tkinter, histoire de passer de la console à quelque chose d'un peu plus interactif sans pour autant aller chercher très loin.

    Mon problème est pour remplir une listbox comme le titre à du vous le dire.
    Je cherche à remplir un listbox avec une liste de chiffre par exemple (dans l'exemple suivant, une boucle).

    Mon problème c'est que je n'arrive pas à les afficher au fur et à mesure qu'ils sont généré par la boucle, mais seulement tous en même temps une fois finit.

    Voici les deux codes (un sans thread et un avec) :
    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
    #!/usr/local/bin/python3
     
    import tkinter
    import time
     
    def tester ():
    	liste.delete(0, tkinter.END)
    	for i in range(0, 10):
    		time.sleep(1)
    		liste.insert(tkinter.END, i)
     
    root = tkinter.Tk()
    root.resizable(width=False, height=False)
    root.title('Test listes...')
     
    liste = tkinter.Listbox(root, width=30, height=25)
    liste.grid(row=0, column=0, padx=15, pady=15)
     
    frameButton = tkinter.Frame(root)
     
    buttonTester = tkinter.Button(frameButton, text="Tester", command=tester)
    buttonQuitter = tkinter.Button(frameButton, text="Quitter", command=root.destroy)
    buttonTester.grid(row=0, column=0)
    buttonQuitter.grid(row=0, column=1)
     
    frameButton.grid(row=1, column=0, padx=15, pady=15)
     
    root.mainloop()
    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
    #!/usr/local/bin/python3
     
    import tkinter
    import time
    import threading
     
    def tester ():
    	liste.delete(0, tkinter.END)
    	for i in range(0, 10):
    		thread = threading.Thread(None, insertion(i))
    		thread.start()
     
    def insertion (i):
    	time.sleep(1)
    	liste.insert(tkinter.END, i)
     
    root = tkinter.Tk()
    root.resizable(width=False, height=False)
    root.title('Test listes...')
     
    liste = tkinter.Listbox(root, width=30, height=25)
    liste.grid(row=0, column=0, padx=15, pady=15)
     
    frameButton = tkinter.Frame(root)
     
    buttonTester = tkinter.Button(frameButton, text="Tester", command=tester)
    buttonQuitter = tkinter.Button(frameButton, text="Quitter", command=root.destroy)
    buttonTester.grid(row=0, column=0)
    buttonQuitter.grid(row=0, column=1)
     
    frameButton.grid(row=1, column=0, padx=15, pady=15)
     
    root.mainloop()
    Et pour les deux c'est la même chose.
    J'ai rajoutais un "sleep" afin de bien le voir.

    Quelqu'un peut il m'aider ?
    Si je n'ai pas été assez clair n'hésitez pas !

    Merci d'avance !

    PS : Je suis sur Mac OS X 10.6 et je code en python 3.

  2. #2
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def tester ():
        liste.delete(0, tkinter.END)
        for i in range(0, 10):
            time.sleep(1)
            liste.insert(tkinter.END, i)
            liste.update() # Voir aussi update_idletasks pour forcer la mise a jour
    @+

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 66
    Points : 45
    Points
    45
    Par défaut
    Super, ça mache !
    Merci beaucoup PauseKawa !

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

Discussions similaires

  1. [AC-2003] Remplissage d'une ListBox avec des éléments d'un Recordset
    Par Sclarckone dans le forum VBA Access
    Réponses: 4
    Dernier message: 10/08/2011, 13h40
  2. Remplissage d'une ListBox selon affichage dans Combo
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/07/2010, 15h52
  3. remplissage d'une listbox
    Par nabilfaouzi dans le forum ASP.NET
    Réponses: 1
    Dernier message: 24/02/2009, 01h35
  4. [C#]Remplissage d'un listbox
    Par Sidi-Bou dans le forum ASP.NET
    Réponses: 10
    Dernier message: 17/10/2006, 09h36
  5. [VB6] remplissage d'un listbox
    Par bvi67 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 22/05/2006, 12h38

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