Bildschirminhalt leeren

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.
sprudel
User
Beiträge: 250
Registriert: Donnerstag 8. März 2007, 17:12

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
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

nicht schön, aber evtl. ein anfang :)

Code: Alles auswählen

def cls():
  if os.name == "posix":
    os.system('clear')
  else:
    os.system('cls') 
sprudel
User
Beiträge: 250
Registriert: Donnerstag 8. März 2007, 17:12

Hi. Darauf bin ich auch schon gekommen. Aber irgendwie ist das nicht so schön. Geht es denn auch noch irgendwie anders?
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

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. 
sprudel
User
Beiträge: 250
Registriert: Donnerstag 8. März 2007, 17:12

Hi. Ist es auch irgendwie mit den Standartpythonbefehlen möglich? Wäre halt wesentlich geschickter. Trotzdem vielen Dank
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

:D
sprudel
User
Beiträge: 250
Registriert: Donnerstag 8. März 2007, 17:12

Masaru hat geschrieben::D
Und ich dachte damit geht alles... so kann man sich täuschen :lol:
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

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 :roll: .
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

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.
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

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*
matott

Wenn du nur für VT100 schreiben willst:

Code: Alles auswählen

# \33 = \e | ESC
print "\33[2J"
sprudel
User
Beiträge: 250
Registriert: Donnerstag 8. März 2007, 17:12

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???
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

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...
Ene Uran
User
Beiträge: 125
Registriert: Sonntag 17. September 2006, 20:14
Wohnort: Hollywood

Wenn es nicht wichtig ist wo der 'cursor' ist, dann:

Code: Alles auswählen

print '\n' * 40
Atomkraftwerkaktienbesitzer
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:

Code: Alles auswählen

echo -e "\e[2J"
nicht den selben Effekt hat wie; Gerade wenn man auf Portabilität setzt, sollte man hier also externe Libraries benutzen.
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

mac = macOs = linux = posix
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

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." :)
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

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 ;)
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

*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.
Antworten