Ich habe mehrere einfache Perl-Programme, die auf die Standardausgabe schreiben, aber das hat einige Probleme:
cmd
-Konsole angezeigt, so dass ich nicht kontrollieren kann, wie sie angezeigt wird (Farben und Terminalgröße), und schlimmer noch, die Konsole ist nicht veränderbar (zumindest in Breite) Um diese Probleme zu lösen, möchte ich in der Lage sein, die Ausgabe in einer einfachen GUI-Schnittstelle als eine Option anzuzeigen. Die GUI sollte reagieren, bis das Programm fertig ist (es sollte möglich sein, das Fenster zu scrollen oder seine Größe zu ändern, während es läuft).
Was für ein einfaches Toolkit und Widget kann ich verwenden, um dies zu tun? (Ich entwickle unter Windows mit ActivePerl).
Sie können eine beliebige GUI-Option verwenden und dann Tie :: STDOUT neu definieren das Verhalten von print
und printf
auf das STDOUT-Dateihandle, um stattdessen die Ausgabe in das Widget Ihrer Wahl zu speichern. Die einzige Sache ist, dass es chaotisch sein kann, mit den Widgets über die Pakete sauber mit dem anonymen Sub zu sprechen. Hier ist ein kurzes, einfaches Beispiel mit Win32 :: GUI :
Beachten Sie, dass der Aufruf von Win32::GUI::Dialog()
am Ende vorhanden ist, damit das Fenster nicht geschlossen wird, sobald das Skript beendet ist.
Von einer schnellen Suche haben Sie ein paar Optionen:
Außerdem gibt es dafür eine Wikibooks-Referenz .
Wenn Sie Firefox auf den Rechnern installiert haben, habe ich an dem Modul XUL::Gui
gearbeitet, mit dem Sie Ihre Perl-GUI mit der Rendering-Engine von Firefox anzeigen können. Aufbauend auf Adams Antwort:
Edit: Fehler behoben mit mehrzeiligen Rückgabewerten von der GUI, Beispiel oben ist jetzt netter. arbeitet mit XUL :: Gui 0.35 +
Win32 :: Console :: Mit ANSI können Sie Hintergrund- und Textfarben und -orte sowie die Größe und den Titel des Befehlszeilenfensters steuern.
AFAIK, es erlaubt keine Mauseingabe, aber es reicht vielleicht, wenn Sie nur den Programmfortschritt anzeigen.
Eine andere Möglichkeit ist, das Programm in html / javascript neu zu schreiben und volle interaktive Fähigkeit zu haben.
Ich mache oft meine Schwerarbeit in Perl, dann konstruiere und schreibe ein HTML-Programm für die Benutzerinteraktion.
Oder haben Sie ein Standard-HTML-Programm und lassen Sie das Perl eine JSON-Datei mit den spezifischen Daten schreiben, bevor ich das HTML-Programm aufrufen.