Terminal like UI in Python

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
Benutzeravatar
Unicorn Deluxe
User
Beiträge: 4
Registriert: Freitag 9. Februar 2018, 17:06

Hallo liebe Community,

ich würe gerne ein Programm schreiben welches mir ein Eingabefenster (z.B. ein Terminal) öffnet. Dort möchte ich dann befehle eingeben können, welche ich dann in meinem Programm-code entgegen nehme und bearbeite. Erst einmal möchte ich so ein interaktives Terminal geöffnet bekommen.
Leider habe ich keine Ahnung wie ich das machen könnte. Hättet ihr da Vorschläge oder Ideen ?

Ein schönes wochenende euch,

mit freundlichen Grüßen,
Uni
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das cmd-Modul ist dafuer gedach: https://docs.python.org/2/library/cmd.html

Allerdings oeffnet das kein Terminal fuer dich, sondern funktioniert *in* einem geoeffneten Terminal in dem du das Programm aufgerufen hast.

Wenn du das Terminal oeffnen willst, kannst du das natuerlich drumrum tun, mit subprocess zB.
Benutzeravatar
Unicorn Deluxe
User
Beiträge: 4
Registriert: Freitag 9. Februar 2018, 17:06

Danke für deine schnelle Antwort __deets__.
Hättest du ein Code-beispiel von subprocess in so einem use-case ?
Ich werde mich da mal einlesen und schauen wie ich damit zurecht komme / zufrieden bin.
Vielen Dank noch mal :)
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Da ich deinen use-case noch nicht mal kenne, nicht wirklich. Hast du schon mal in die Dokumentation geschaut von subprocess? Und dir dann ueberlegt, wie du ein Kommando, das du auf der Shell eingibst, da aussehen wuerde? Ohne letzteres zu kennen, kann man da ja eh nix machen.
Benutzeravatar
Unicorn Deluxe
User
Beiträge: 4
Registriert: Freitag 9. Februar 2018, 17:06

Use-case wäre hier:
-Terminal als extra Fenster öffnen
-phw eingeben
-'Hello World' ausgegeben bekommen.

Intern würde ich die Eingabe auf dem Terminal abfragen, überprüfen ob sie gleich 'phw' ist, und dann 'Hello World' printen (logischer weise auch in dem Terminal).

Anmerkung: das Terminal sollte keines von der Entwicklungsumgebung sein, sonder ein eigenständiges Fenster, und nur als Kommunikationsmittel zwischen Benutzer und Programm dienen.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wie startest du denn von Hand ein Terminal? Und auf welchem OS bist du unterwergs? Wenn es um Linux geht, und auch wirklich immer ein Passwort - dafuer gibt's schon "ssh-askpass", zb in der ssh-askpass-gnome Inkarnation, bei der ein Fenster aufgeht, ein Passwort abfragt, und das dann zurueckliefert. Muss man nix programieren.
Benutzeravatar
Unicorn Deluxe
User
Beiträge: 4
Registriert: Freitag 9. Februar 2018, 17:06

Da habe ich mich wohl missverständlich ausgedrückt.
Wenn mann in C ein einfaches Programm schreibt, z.B.:

Code: Alles auswählen

int i = scanf("%d", &i);
Dies kompiliert und startet öffnet sich ein eingabefenster in Form eines cmd in dieses mann einen Wert für i eintragen muss.
Sagen wir nun das fertige Programm ist :

Code: Alles auswählen

int i = scanf("%d", &i);
printf("Die Zahl ist %d", i);
Als .exe umgewandelt wird beim ausführen ein Consolen Fenster geöffnet in welches man eine Zahl einträgt(z.B.:5) und anschließend wird "Die Zahl ist 5" ausgegeben.
Danach schließt sich das Fenster wieder und das Programm ist beendet.

Wie würde das in Python aussehen?
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Code: Alles auswählen

print(“Die Zahl ist: {}”, input())
Das CMD-Fenster geht einfach auf beim Doppelklick auf. Allerdings auch sofort wieder zu nach Beendigung des Programms. Das sollte bei C aber genauso sein.
Antworten