Fortschrittsbalken in Sublime Text mit Python

9

Ich verwende den mächtigen Sublime Text 3-Editor auf MacOSX, um Python-Codes auszuführen. Ich möchte einen Fortschrittsbalken einer for-Schleife anzeigen und den folgenden Befehl:

%Vor%

löscht die zuvor gedruckte Zeile im Ausgabefenster nicht wie erwartet ( \r ), sondern erzeugt N lines:

%Vor%

Was nicht wirklich gut zu lesen ist - Ich schließe daraus, dass das Ausgabefenster schreibgeschützt sein könnte.

Hat jemand Vorschläge, um die Verwendung von Fortschrittsbalken in Sublime Text zu verbessern?

    
Léonard 24.03.2016, 16:29
quelle

6 Antworten

6

Wenn wir uns sublime.py ansehen, sehen wir, dass die Methode flush tatsächlich nichts tut:

%Vor%

Ich würde jedoch nicht empfehlen, die Konsole trotzdem für Benutzerausgaben zu verwenden. Normalerweise verwenden Sie Ausgabefelder / Ansichten oder Statusmeldungen.

Statusmeldungen sind einfacher zu verwenden, aber weniger leistungsstark. sergioFC demonstrierte dies in seiner Antwort .

Dies zeigt, wie ein Ausgabefeld verwendet wird. Es ist sehr flexibel, aber Sie müssen Ihren eigenen Textbefehl schreiben, um den Text einzufügen. Dies ist notwendig, da Sie ein Bearbeitungsobjekt benötigen, um den Inhalt der Ansicht zu ändern.

%Vor%

Die Ausgabe:

    
r-stein 26.03.2016, 11:01
quelle
5

Sie können einen visuellen Fortschrittsbalken erstellen mit:

Demo:

Code:

@ GitHub

(führe das Plugin durch Eingabe von Progress Bar Demo @ der Befehlspalette aus)

Anmerkungen:

Es gibt eine css-Datei , die den Stil von mdpopups steuert. Aus irgendeinem Grund hat die Eigenschaft color keinen Effekt.

Der Parameter mdpopups.show_popup ' location übernimmt -1 für das Popup, das an der Caret-Position gesetzt werden soll. Ansonsten bin ich nicht sicher, wie location das Popup beeinflusst, da es nur einen einzigen Integer-Wert benötigt.

Ich habe im folgenden Thread nach diesen Problemen gefragt:

[Proof of Concept] Visuelle Fortschrittsleiste

    
Enteleform 26.03.2016 11:24
quelle
4

Als weitere alternative Lösung können Sie die Statusleiste verwenden. Wenn Sie die Statusleiste festlegen, wird der vorherige Text gelöscht. Paketsteuerung verwendet auch die Statusleiste beim Installieren von Paketen.

Beispiel:

%Vor%     
sergioFC 26.03.2016 00:03
quelle
2

Was Sie vielleicht suchen, ist eine Möglichkeit, die Ausgabe davon abzuhalten, mehrere Zeilen zu verbrauchen. Sie können \b (das Rückschrittzeichen) so oft drucken, wie zuvor gedruckte Zeichen vorhanden waren. Ich habe dies als Beispiel geschrieben:

(Python 2.7.6)

%Vor%

Versuchen Sie, das auszuführen, und Sie können es an Ihre Bedürfnisse anpassen.

    
thedouglenz 24.03.2016 16:57
quelle
2

Sie können die Fortschrittsleistenbibliothek verwenden. befindet sich hier: Ссылка

Sie können es auch von easy_install installieren, geben Sie einfach Folgendes ein: easy_install progressbar

Beispiel zu verwenden:

wenn Sie eine einfache Fortschrittsleiste mit Informationen über die Funktion wollen:

%Vor%

sonst, wenn Sie Fortschrittsbalken mit Informationen über die Funktion möchten:

%Vor%     
Mr. zero 27.03.2016 17:31
quelle
1

Leider ist dies in der Ausgabetafel von Sublime nicht möglich. Das Panel ist keine echte Konsole oder Terminal und interpretiert unter anderem auch Escapesequenzen wie \r und \b ( \n wird jedoch richtig interpretiert). Wenn Sie sehen möchten, wie genau es funktioniert, installieren Sie PackageResourceViewer , und öffnen Sie Packages/Default/exec.py .

Damit dies funktioniert, müssen Sie ein neues Build-System um es im Terminal auszuführen. Aufgrund der Launen von OS X müssen Sie zwei Dateien erstellen. Das erste ist ein Shell-Skript:

%Vor%

Ändern Sie /path/to mit Ihrem tatsächlichen Pfad zu python (oder python3 ). Speichern Sie es wo immer Sie möchten als PythonTerminal.sh . Als nächstes wählen Sie Tools -> Build System -> New Build System und fügen Sie Folgendes ein:

%Vor%

Ändern Sie erneut /path/to zum tatsächlichen Pfad zu PythonTerminal.sh . Speichern Sie die Datei als Packages/User/PythonTerminal.sublime-build (sie sollte beim Speichern automatisch das richtige Verzeichnis öffnen).

Wählen Sie schließlich Tools -> Build System -> PythonTerminal , wechseln Sie zu Ihrer Python-Datei und erstellen Sie mit B . Ein neues Terminal-Fenster wird geöffnet und Ihr Fortschrittsbalken sollte laufen.

    
MattDMo 25.03.2016 15:33
quelle