Konsole erstellen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Aries
User
Beiträge: 51
Registriert: Mittwoch 21. August 2013, 01:19

Hallo, .pyw-Dateien rufen IDLE nicht auf. Gibt es eine Möglichkeit eine normale schwarze Konsole zu erstellen? Und wenn ja, wie schreibt man in die was rein und wie fängt man Eingaben auf?
BlackJack

@Aries: IDLE ist eine Entwicklungsumgebung und normalerweise möchte man nicht das ein Editor aufgeht mit dem Quelltext wenn man ein Programm zum ausführen anklickt.

Wenn Du unter Windows eine Textkonsole (Eingabeaufforderung) haben möchtest dann musst *Du* die öffnen und *darin* dann ein Konsolenprogramm aufrufen. Oder Du erstellst eine entsprechende Verknüpfung auf die man klicken kann. Details dazu kann ich jetzt nicht liefern weil ich gerade kein Windows greifbar habe wo ich das mal eben ausprobieren kann.

Ansonsten suchst Du ``print`` und `raw_input()` beziehungsweise `print()` und `input()`.
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

Sollte es wirklich an idle scheitern, kannst du auch einen Rechtsklick auf die Datei machen und dort "mit idle öffnen" auswählen. Zumindest meine ich, dass das unter Windows geht.
Aries
User
Beiträge: 51
Registriert: Mittwoch 21. August 2013, 01:19

BlackJack hat geschrieben:normalerweise möchte man nicht das ein Editor aufgeht mit dem Quelltext wenn man ein Programm zum ausführen anklickt.
Bei pyw.-Dateien passiert das ja im Gegensatz zu py.-Dateien auch nicht.
BlackJack hat geschrieben:Wenn Du unter Windows eine Textkonsole (Eingabeaufforderung) haben möchtest dann musst *Du* die öffnen und *darin* dann ein Konsolenprogramm aufrufen.
Von Pascal bin ich es halt gewöhnt, dass standardmäßig eine Konsole erscheint, die man mit {$apptype gui} ausschalten kann.

Ich brauch sowas mehr zur Ausgabe, momentan sogar ausschließlich dazu.

Dafür scheint mir wohl eher das folgende das richtige zu sein:

Code: Alles auswählen

from Tkinter import *
tk = Tk()
text = Text(tk, height=20, width=50)
text.pack()
text.insert("@0,0", '''1
2
3
''')
tk.mainloop()
Die Probleme dabei sind,
- dass ich so Ausgaben überhaupt nur sehe, wenn das gesamte Programm funktioniert, und nicht etwa alle bis zum Fehler,
- dass ich Fehlermeldungen nicht sehe, und
- dass die Eingabe ganz anders funktioniert.
sparrow hat geschrieben:Sollte es wirklich an idle scheitern
An IDLE scheitert nichts, es ist nur etwas unbequem.
- Wenn man einen Namen markiert, werden andere Vorkommen des Namens nicht untermalt.
- Wenn man mehrmals Enter drückt, fehlen in den neu erstellten Zeilen abgesehen von der letzten die Einrückungen.
- Bei langem Code (momentan z. B. 1149 Zeilen, max. 1271 Spalten) stottert der Editor.
- Wenn man etwas markiert, kann man mit Rechtsklick nichts damit machen.
- Das Scrollen beim Markieren geht nur langsam.
- Die Farben stören mich auch irgendwie.
- Wenn man ein geändertes Programm ausführen will, geschieht die vorher notwendige Speicherung nicht automatisch.
BlackJack

@Aries: Wie gesagt, Du möchtest die Konsole selber öffnen und das Python-Programm von dort aus starten. Denn selbst wenn bei Klick auf *.py-Dateien automatisch eine Konsole startet, dann ist das spätestens bei Programmende, egal ob nun normal oder durch Fehler ein Problem, weil das Fenster dann auch automatisch wieder zugeht.

Das ist bei Pascal grundsätzlich auch nicht anders. So funktioniert das grundsätzlich mit Windows Konsolen-Anwendungen. Da kann es höchstens sein, dass die verwendete IDE etwas anderes anbietet.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Aries hat geschrieben:Von Pascal bin ich es halt gewöhnt, dass standardmäßig eine Konsole erscheint, die man mit {$apptype gui} ausschalten kann.
Das ist bei Python unter Windows auch der Fall. Hier schaltet man allerdings mit dem Interpreter. `python.exe` fuer Konsolenanwendungen und `pythonw.exe` fuer GUI-Anwendungen. Den beiden sind normalerweise `.py` respektive `.pyw` zugeordnet.

Herzlichen Glueckwunsch: Du hast die Konsole selbst ausgeschaltet.

http://wiki.python-forum.de/FAQ#Wie_sta ... Skripte.3F
Hellstorm
User
Beiträge: 231
Registriert: Samstag 22. Juni 2013, 15:01

BlackJack hat geschrieben:@Aries: Wie gesagt, Du möchtest die Konsole selber öffnen und das Python-Programm von dort aus starten. Denn selbst wenn bei Klick auf *.py-Dateien automatisch eine Konsole startet, dann ist das spätestens bei Programmende, egal ob nun normal oder durch Fehler ein Problem, weil das Fenster dann auch automatisch wieder zugeht.
Wobei man bei dem ganz normalen Programmende einfach ein input() ans Ende des Programms setzen kann, so dass das Fenster auf bleibt und durch Druck von Enter geschlossen wird. Gut, das hilft natürlich nicht bei Fehlern, aber bei normalen Programmen ja schon.
BlackJack

@Hellstorm: Und Du nervst damit alle die so ein Programm in einer Konsole starten und die am Ende immer noch völlig unsinnigerweise die Eingabetaste drücken müssen. Wenn ein Programm in einer Konsole laufen soll, dann sollte man es auch in der Konsole starten. Das ist der vorgesehene Weg.
Aries
User
Beiträge: 51
Registriert: Mittwoch 21. August 2013, 01:19

cofi hat geschrieben: Das ist bei Python unter Windows auch der Fall. Hier schaltet man allerdings mit dem Interpreter. `python.exe` fuer Konsolenanwendungen und `pythonw.exe` fuer GUI-Anwendungen. Den beiden sind normalerweise `.py` respektive `.pyw` zugeordnet.
Ach so. ".py" war bei mir dem Editor zugeordnet. Ich habe das jetzt geändert.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

@Hellstorm: Auch "normale" Programme koennen Exceptions werfen bzw. nicht alle behandeln. Und selbst wenn sie sie behandeln macht es eventuell nur Sinn das Programm geregelt zu beenden, evtl mit einer Fehlermeldung ... die man nicht sehen wuerde, es sei denn man sprenkelt ueberall im Code `input()`.
Aries
User
Beiträge: 51
Registriert: Mittwoch 21. August 2013, 01:19

BlackJack hat geschrieben:@Hellstorm: Und Du nervst damit alle die so ein Programm in einer Konsole starten und die am Ende immer noch völlig unsinnigerweise die Eingabetaste drücken müssen. Wenn ein Programm in einer Konsole laufen soll, dann sollte man es auch in der Konsole starten. Das ist der vorgesehene Weg.
Kann man mit einem Python-Programm herausfinden, ob es selbst in einer Konsole geöffnet wurde, bzw. ob sich die Konsole automatisch schließt, wenn das Programm zu Ende ist?
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

@Aries:
Der Interpreterprozess dürfte wissen, ob AllocConsole erfolgreich war. Ob er dies an irgendeiner Stelle in die Pythonumgebung durchreicht - kA.
BlackJack

@jerch: Selbst wenn er das täte wäre das nicht plattformunabhängig.
Aries
User
Beiträge: 51
Registriert: Mittwoch 21. August 2013, 01:19

jerch hat geschrieben:@Aries:
Der Interpreterprozess dürfte wissen, ob AllocConsole erfolgreich war. Ob er dies an irgendeiner Stelle in die Pythonumgebung durchreicht - kA.
Wie kommt man an die aktuelle Konsolenschriftfarbe, Konsolenhintergrundfarbe, Konsolenschriftart und Konsolencursorposition ran?
Antworten