2017-12-05 3 views
1

Ich mache etwas Berechnung zwischen zwei Sensoren und ich möchte "grafisch" drucken, aber in der Regel die% Asymmetrie zwischen den beiden Sensoren.Wie wird der Fortschrittsbalken mit negativen Werten in Python 2.X gedruckt?

Beispiel: Ich habe als Ergebnis -20% (was bedeutet, dass der linke Sensor 20% höher ist als der rechte).

ich diese drucken möchten, dynamisch, auf der gleichen Linie:

Wenn ich -20%: [___________________- 20% ######## || _____________________________]

Wenn ich 0%: [_______________________________ || _____________________________]

Wenn ich 10%: [_______________________________ || ### 10% _______________________]

Wie könnte ich fortfahren? Ich probierte mit Progressbar API, aber es erlaubt dies nicht (nur progressive Balken, beginnend von links).

Ich würde es vorziehen, keine GUI zu verwenden, weil ich dies in ssh ohne X11-Weiterleitung ausführen. Aber wenn jemand eine ähnliche Lösung mit GUI habe, bin ich auch interessiert. Vielen Dank!

Antwort

0

Drucken eines Fortschrittsbalkens ist nicht schwierig. Die übliche Methode ist es, die Wagenrücklaufzeichen (\r) zu verwenden:

from __future__ import print_function 

import sys 

import fcntl 
import struct 
import termios 

class ProgressBar(object): 
    def __init__(self): 
     pass 

    def get_terminal_width(self): 
     try: 
      return struct.unpack('hh', fcntl.ioctl(sys.stdout.fileno(), termios.TIOCGWINSZ, '\x00' * 4))[1] 
     except IOError: 
      return 120 

    def display(self, percentage): 
     terminal_width = self.get_terminal_width() 

     stars = '*' * int((percentage/100.0) * terminal_width) 

     print(stars, end='\r') # Print out your progress and jump to the beginning of the line 
     sys.stdout.flush()  # Flush stdout to make it show up immediately 

if __name__ == '__main__': 
    import time 
    bar = ProgressBar() 

    for i in range(100): 
     bar.display(i) 
     time.sleep(0.03) 

ich es verlassen werde Sie die Stringmanipulationen Sie die Fortschrittsbalken in der Mitte zeigen bis erhalten tun müssen, um herauszufinden.

Verwandte Themen