Ich entwickle eine Python-App mit dem Modul cmd .
Einige Nachrichten an den Benutzer werden ziemlich lang sein und ich möchte sie paginieren. Die ersten 10 (oder eine konfigurierbare Anzahl) Zeilen der Nachricht würden erscheinen, und das Drücken der LEERTASTE würde die nächste Seite bis zum Ende der Nachricht anzeigen.
Ich möchte hier nichts neu erfinden, gibt es einen einfachen Weg, dieses Feature zu implementieren?
Die einfache Sache wäre, Ihr Skript zur Laufzeit durch "less" oder einen ähnlichen Befehl zu leiten.
Hier ist eine einfache Methode, die ungefähr das tut, was Sie wollen:
%Vor%Sie könnten auch nach Fluchen suchen.
Wie Yoni oben gesagt hat, besteht der richtige Weg darin, eine Druckmethode bereitzustellen, die automatisch in Ihrer laufenden cmd-Instanz paginiert. Der Konstruktor von Cmd übernimmt die Argumente stdin und stdout. Stellen Sie einfach ein Objekt bereit, das wie stdout funktioniert und Ihre Paging-Druckmethode unterstützt.
%Vor%Ich hatte dieselbe Frage. Es gibt einen Pager, der im pydoc Modul integriert ist. Ich habe es so eingearbeitet (was ich hackisch und unbefriedigend finde ... Ich bin jedoch offen für bessere Ideen).
Ich mag die Idee, dass es autopage wird, wenn es mehr als x Ergebnisse gibt und Paging aktiviert ist, was möglich ist, aber hier nicht ausgeführt wird.
%Vor% Paging-Subroutinen finden Sie in der genutils.py Datei von IPython (siehe page
, oder page_dumb
für einen einfacheren). Der Code ist ein wenig kompliziert, aber das ist wahrscheinlich unvermeidbar, wenn Sie versuchen, auf Systeme wie Windows und die verschiedenen Arten von Terminal-Emulatoren portierbar zu sein.
Tags und Links python cmd pagination