Seite 1 von 2
Bildschirminhalt leeren
Verfasst: Freitag 9. März 2007, 17:06
von sprudel
Hallo.
Gibt es denn in Python ein Plattformübergreifendes leeren des Bildschirms, ähnlich dem cls unter Windows, und dem clear unter Linux? Wäre mir wirklich wichtig
Verfasst: Freitag 9. März 2007, 17:13
von Dill
nicht schön, aber evtl. ein anfang
Code: Alles auswählen
def cls():
if os.name == "posix":
os.system('clear')
else:
os.system('cls')
Verfasst: Freitag 9. März 2007, 17:16
von sprudel
Hi. Darauf bin ich auch schon gekommen. Aber irgendwie ist das nicht so schön. Geht es denn auch noch irgendwie anders?
Verfasst: Freitag 9. März 2007, 17:19
von Dill
http://newcenturycomputers.net/projects/wconio.html
Code: Alles auswählen
WConio.clreol() #clears from the cursor position to the end of the line.
WConio.clrscr() #clears the screen and homes the cursor.
Verfasst: Freitag 9. März 2007, 17:35
von sprudel
Hi. Ist es auch irgendwie mit den Standartpythonbefehlen möglich? Wäre halt wesentlich geschickter. Trotzdem vielen Dank
Verfasst: Freitag 9. März 2007, 19:16
von Masaru
Nö

Verfasst: Freitag 9. März 2007, 19:34
von sprudel
Masaru hat geschrieben:Nö

Und ich dachte damit geht alles... so kann man sich täuschen

Verfasst: Freitag 9. März 2007, 19:39
von Masaru
Alles wir nie gehen

... es geht aber verdammt vieles. Und mit der Möglichkeit der Einbindung von Libraries die eben nicht bei den Standard-Batterien mit enthalten sind, hast Du eine richtig große Menge an Möglichkeiten und Ansätzen zur Problembewältigung.
Eine 100%ige Lösung für jede Frage gibt es halt im wahren Leben nicht

.
Verfasst: Freitag 9. März 2007, 20:16
von nkoehring
Wenn du solche Sachen in der Konsole machen moechtest, koenntest du auch Ncurses verwenden. Wobei ich glaube, dass es Overkill ist, falls du wirklich nur den Bildschirm leeren moechtest und nicht die Konsole wie ein "Fenster" verwenden.
Infos zu Curses in Python findest du
in der offiziellen Dokumentation auf Python.org.
Verfasst: Freitag 9. März 2007, 20:40
von BlackVivi
Was findest du an
Code: Alles auswählen
def cls():
if os.name == "posix":
os.system('clear')
else:
os.system('cls')
So unschön oO Hab ich irgendwie was nicht mitgekriegt *kopfkratz*
Verfasst: Freitag 9. März 2007, 20:42
von matott
Wenn du nur für VT100 schreiben willst:
Verfasst: Freitag 9. März 2007, 20:56
von sprudel
BlackVivi hat geschrieben:Was findest du an
Code: Alles auswählen
def cls():
if os.name == "posix":
os.system('clear')
else:
os.system('cls')
So unschön oO Hab ich irgendwie was nicht mitgekriegt *kopfkratz*
Nunja, was ist wenn ich es zb. auf einem Mac Rechner verwenden will? Ich hab keinen, und weiß über die Dinger quasi garnichts. Aber dann wäre ich doch irgendwie schon verloren.
@matott:
wtf ist VT100???
Verfasst: Freitag 9. März 2007, 20:59
von BlackVivi
Auf einem Mac Rechner läuft imho auch ein POSIX Betriebsystem und läuft mit einer Bash Konsole oO'' Die den Clear Befehl unterstützt... und ansonsten entdeck ich auch sonst nichts unsauberes...
Verfasst: Freitag 9. März 2007, 21:06
von Ene Uran
Wenn es nicht wichtig ist wo der 'cursor' ist, dann:
Verfasst: Freitag 9. März 2007, 21:40
von matott
sprudel hat geschrieben:wtf ist VT100???
Siehe:
http://en.wikipedia.org/wiki/VT100
wikipedia hat geschrieben:[...] which became the de facto standard used by terminal emulators [...]
Funktioniert also oft, aber nicht immer

.
Vielleicht sollte man aber wirklich ncurses verwenden, da es gerade für Terminalabstraktion entwickelt wurde und auch heute nicht alle Konsolen VT100 kompatibel sind. Ich verwende z.B. rxvt-unicode, wobei:
nicht den selben Effekt hat wie;
Gerade wenn man auf Portabilität setzt, sollte man hier also externe Libraries benutzen.
Verfasst: Freitag 9. März 2007, 23:15
von Dill
mac = macOs = linux = posix
Verfasst: Samstag 10. März 2007, 00:57
von Leonidas
Dill hat geschrieben:mac = macOs = linux = posix
Ähm... nein?
Mac ist der Computer,
Mac OS das dort verwendete OS, bis es von
Mac OS X ersetzt wurde, welches auf BSD basiert welches mehr oder weniger
POSIX-kompatibel sein sollte.
Und das alte Mac OS definiert os.name nicht als POSIX, Mac OS X schon eher. Andererseits ist das alte Mac OS eigentlich inzwischen auch vernachlässigbar.
Verfasst: Samstag 10. März 2007, 08:33
von Dill
ich habe hier doch den universellen überladenen = operator benutzt.
was ich eigentlich sagen wollte:
"Mac ist der Computer, Mac OS das dort verwendete OS, bis es von Mac OS X ersetzt wurde, welches auf BSD basiert welches mehr oder weniger POSIX-kompatibel sein sollte."

Verfasst: Samstag 10. März 2007, 09:36
von nkoehring
Leonidas hat geschrieben:Mac ist der Computer,
Mac OS das dort verwendete OS, bis es von
Mac OS X ersetzt wurde, welches auf BSD basiert welches mehr oder weniger
POSIX-kompatibel sein sollte.
MacOSX ist absolut POSIX-kompatibel. Der BSD-Kern unter MacOSX hat nur in Sachen Treibern nennenswerte Veraenderungen erlebt. Ansonsten laeuft also auf dem Mac so gut wie alles, was auch auf dem entsprechenden BSD laeuft oder ist zumindest leicht portierbar, wenn es um wirklich systemnahe Sachen geht. Bei solchen Escape-Sequenzen zB waere ich mir nicht so sicher, da die ja nicht Shell- sondern Terminalabhaengig sind. Aber nur weil ein XTerm auf jedem Mac existiert und laeuft, heißt das ja nicht, dass es der Standard dort ist. In dem Sinne ist ein ``
system(clear)`` wohl doch um einiges sicherer

Verfasst: Samstag 10. März 2007, 18:34
von Masaru
*hustet* wenn ein "clear screen" so wichtig für eine Anwendung ist, die auf mehrere (eventuell gar allen) Betriebsysstemen laufen soll ... dann sollte man bedenken, dass dies ebenso ein irrealer Wunsch von der Programmiersprache ist, wie dass Python 100%ig auf jede Frage eine Antwort hätte

.
Irgendwann kommt man immer an einen Punkt, wo man einsehen muss (oder besser gesagt: sollte), dass man mit den gegebenen Möglichkeiten oder Anforderungen nicht weiter kommt und Abstriche machen oder gar andere Richtungen einschlagen muss.
Z.B. wenn ein Clear Screen ein "muss" ist und es auf Plattformen laufen soll, für die man nicht immer einen entsprechenden CommandoShell-Befehl vorrausetzen kann ... dann sollte man evntuell überlegen, ob die Lösung nicht eventuell in einer GUI-Form besser geeignet wäre, als die zuerst eingeschlagene CommandoShellScript-Version.