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()Et pour les deux c'est la même chose.
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()
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.
Partager