Partage
  • Partager sur Facebook
  • Partager sur Twitter

Barre de progression avec du temps

Time, progression, supprimer un output déjà présent

30 avril 2020 à 14:38:11

Bonjour tout le monde

J'étais curieux sur un sujet mais je viens juste de commencer à apprendre le Python (1 mois) et je me suis demandé "Comment on peut faire une barre de progression ?"

Je suis pas assez calé pour le faire avec un fichier qui décompresse un autre mais juste avec du temps le problème premier est : Je connais pas la fonction qui s'occupe du temps

Et deuxièmement, y a-t-il de quoi faire une progression ?

Soit une barre qui se remplit soit du texte ou un pixel couleur qui remplace un vide du genre : ◼️◼️——— pour 40% et ça devient ◼️◼️◼️—— pour 60% mais là vient un dernier problème (promis) si ce n'est pas le cas ...

Comment on remplace un output déjà present pour le remplacer par un autre print ? Pour avoir quelque chose de clean sans forcément supprimer les anciens output un peu comme sur Linux quand il installe un paquet

Merci infiniment même pour juste avoir regardé ma question 👌🏾

  • Partager sur Facebook
  • Partager sur Twitter

[Lucas ESPINAR] -:- Shaya -:-

30 avril 2020 à 14:50:46

Le problème du temps est de savoir par avance combien de temps il faudra pour arriver à... C'est assez complexe à déterminer car les débits varient et le temps aussi.

Voici un exemple de code trouvé ICI que j'ai modifié un peu pour être compatible Python 3.x

import sys
import time

toolbar_width = 40

# setup toolbar
sys.stdout.write("[%s]" % (" " * toolbar_width))
sys.stdout.flush()
sys.stdout.write("\b" * (toolbar_width + 1))  # return to start of line, after '['

for i in range(toolbar_width):
    time.sleep(0.1)  # do real work here
    # update the bar
    sys.stdout.write("-")
    sys.stdout.flush()

sys.stdout.write("]\n")  # this ends the progress bar



  • Partager sur Facebook
  • Partager sur Twitter

Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

30 avril 2020 à 16:12:15

Pour info, il y a le module tqdm qui le fait déjà très bien https://pypi.org/project/tqdm/ :)

Sinon pour faire un affichage "propre" comme dans Linux comme tu le dis, il suffit de ré-écrire la ligne à chaque fois en faisant un retour charriot sans retour à la ligne (donc faire \r sans faire \n).

import time

for i in range(50):
    print('-'*10, i, '-'*10, end='\r')
    time.sleep(0.1)



  • Partager sur Facebook
  • Partager sur Twitter
1 mai 2020 à 21:22:39

Merci infiniment à vous deux, ça m'a enlevé une épine du pied, plus qu'à apprendre et bien comprendre la bibliothèque utilisée parce que j'ai commencé à paniquer quand j'ai un double appel à cette même bibliothèque d'un coup.

Merci encore

  • Partager sur Facebook
  • Partager sur Twitter

[Lucas ESPINAR] -:- Shaya -:-

6 janvier 2025 à 7:02:24

Bonjour, j’ai créé une progressbar dans une interface avec un bouton play/pause et stop pour lire un fichier audio. La barre de progression est interactive, je peux l’avancer manuellement cependant lorsque je la touche la barre ne progresse plus, ça la perturbe et visuellement ne fonctionne plus . Merci de m’éclairer
  • Partager sur Facebook
  • Partager sur Twitter
6 janvier 2025 à 10:48:56

@ManuLevraut     Bonjour, merci de ne pas squatter le sujet des autres pour une nouvelle question, créer votre propre sujet dans le respect des règles du forum à savoir qu'il nous faut la description de votre problème et le code que vous avez écrit inséré sur le forum à l'aide de l'outil d'intégration de code soit le bouton code </>

Je ferme ce déterrage.

Le message qui suit est une réponse automatique activée par un membre de l'équipe de modération. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

Pour plus d'informations, nous vous invitons à lire les règles générales du forum

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Liens conseillés

  • Partager sur Facebook
  • Partager sur Twitter