Boucle for pour changer un label avec textvariable
xunil2003
Messages postés
765
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
5 septembre 2024
-
Modifié par xunil2003 le 4/02/2024 à 15:05
jugor - 5 févr. 2024 à 08:43
jugor - 5 févr. 2024 à 08:43
A voir également:
- Boucle for pour changer un label avec textvariable
- Changer dns - Guide
- Changer clavier qwerty en azerty - Guide
- Changer carte graphique - Guide
- Changer police facebook - Guide
- Changer extension fichier - Guide
3 réponses
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
4 févr. 2024 à 18:40
4 févr. 2024 à 18:40
Bonjour,
Il est défini ou ton label ?
yg_be
Messages postés
23184
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 septembre 2024
Ambassadeur
1 533
4 févr. 2024 à 19:02
4 févr. 2024 à 19:02
bonjour,
un exemple:
import tkinter liste_videos_pioche = ['xxxxxxxxxxx', 'gggggggggg', 'kkkkkkkkk', 'pppppppppp'] #, 'oooooooooooooooo', 'pppppppppppp', 'rrrrrrrrrrrr', 'sssssssssssss', 'mmmmmmmmmmmm', 'vvvvvvvvvvvvvvv'] def plus2(): global nro2,entree2 if nro2<len(liste_videos_pioche): entree2['text']=liste_videos_pioche[nro2] nro2+=1 entree2.after(2000, plus2) root=tkinter.Tk() entree2=tkinter.Label(root) entree2.pack() nro2=0 plus2() root.mainloop()
yg_be
Messages postés
23184
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 septembre 2024
1 533
4 févr. 2024 à 19:13
4 févr. 2024 à 19:13
un autre exemple plus propre, sans global:
import tkinter liste_videos_pioche = ['xxxxxxxxxxx', 'gggggggggg', 'kkkkkkkkk', 'pppppppppp' , 'oooooooooooooooo', 'pppppppppppp', 'rrrrrrrrrrrr', 'sssssssssssss', 'mmmmmmmmmmmm', 'vvvvvvvvvvvvvvv'] def plus2(w): if w.nro2==len(liste_videos_pioche): w.nro2=0 w['text']=liste_videos_pioche[w.nro2] w.nro2+=1 w.after(1500, lambda:plus2(w)) root=tkinter.Tk() entree2=tkinter.Label(root) entree2.pack() entree2.nro2=0 plus2(entree2) root.mainloop()
yg_be
Messages postés
23184
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 septembre 2024
1 533
>
yg_be
Messages postés
23184
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 septembre 2024
5 févr. 2024 à 07:30
5 févr. 2024 à 07:30
Il est possible d'utiliser des sleep(), mais cela bloquerait tout ce que tu voudrais faire de plus dans tkinter:
import tkinter import time liste_videos_pioche = ['xxxxxxxxxxx', 'gggggggggg', 'kkkkkkkkk', 'pppppppppp' , 'oooooooooooooooo', 'pppppppppppp', 'rrrrrrrrrrrr', 'sssssssssssss', 'mmmmmmmmmmmm', 'vvvvvvvvvvvvvvv'] def plus3(w): while True: if w.nro2==len(liste_videos_pioche): w.nro2=0 w['text']=liste_videos_pioche[w.nro2] w.update() w.nro2+=1 time.sleep(2) root=tkinter.Tk() entree2=tkinter.Label(root) entree2.pack() entree2.nro2=0 entree2.after(100,lambda:plus3(entree2)) root.mainloop()
Ici, comme tu ne fais rien d'autre, cela peut fonctionner.
Bonjour, on peut réduire cela en :
import tkinter as tk def change_text(widget, list_values, delay): ms = int(delay * 1000) for i, text in enumerate(list_values): widget.after(ms * i, widget.config, {'text':list_values[i]}) liste_videos_pioche = ( 'xxxxxxxxxxx', 'gggggggggg', 'kkkkkkkkk', 'pppppppppp', 'oooooooooooooooo', 'pppppppppppp', 'rrrrrrrrrrrr', 'sssssssssssss', 'mmmmmmmmmmmm', 'vvvvvvvvvvvvvvv', ) root = tk.Tk() label = tk.Label(root, text='', width=4 + max(n for n in map(len, liste_videos_pioche))) label.grid() change_text(label, liste_videos_pioche, .5) root.mainloop()
La méthode after pouvant accepter des paramètres à passer à la fonction.