Wie kann ich die Perl-Konsolenausgabe in einer GUI anzeigen?

8

Ich habe mehrere einfache Perl-Programme, die auf die Standardausgabe schreiben, aber das hat einige Probleme:

  • Einige meiner Benutzer haben Angst vor einer Konsole
  • Meine Benutzer arbeiten unter Windows, daher wird meine Programmausgabe auf einer 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).

    
Jazz 08.12.2009, 13:07
quelle

5 Antworten

10

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 :

%Vor%

Beachten Sie, dass der Aufruf von Win32::GUI::Dialog() am Ende vorhanden ist, damit das Fenster nicht geschlossen wird, sobald das Skript beendet ist.

    
Adam Bellaire 08.12.2009, 14:04
quelle
5

Von einer schnellen Suche haben Sie ein paar Optionen:

  1. Perl mit NCurses (es ist eine GUI, aber es bleibt in der Konsole)
  2. Perl mit wxWindows wxPerl
  3. PerlTK
  4. GTK mit Perl (siehe die Wikibooks-Referenz)

Außerdem gibt es dafür eine Wikibooks-Referenz .

    
monksy 08.12.2009 13:14
quelle
4

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:

%Vor%

Edit: Fehler behoben mit mehrzeiligen Rückgabewerten von der GUI, Beispiel oben ist jetzt netter. arbeitet mit XUL :: Gui 0.35 +

    
Eric Strom 08.12.2009 15:50
quelle
1

wxWidgets mit Wx Das CPAN-Modul ist derzeit in der Perl-Welt sehr beliebt (siehe Padre )

Ich bin mir jedoch nicht sicher, ob ActivePerl dazu kommt, von dem ich glaube, dass er Tk stattdessen enthalten kann.

/ I3az /

    
draegtun 08.12.2009 13:14
quelle
0

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.

    
user1067305 04.04.2017 22:10
quelle

Tags und Links