hi
ich möchte meinen konsolen anwendungen (mit py2exe erstellt) farbe verpassen wie etwa hier zu begutachten:
im forum gibts dazu schon einen thread (http://www.python-forum.de/viewtopic.ph ... in+console) der sehr hilfreich ist, allerdings nicht ganz. habe die verschiedenen möglichkeiten angeschaut und ein problem fiel mir spontan, wenn ich meinen output so stylen möchte wie oben auf dem screenshot: diese python module ändern die gesamte output farbe bis man sie wieder änder. das wäre nach paar texten schon langer code leider.
gibt es den ne möglichkeit das ganze elganter zu gestallten, damit der output allein nicht schon so ne "rechenarbeit" für die cpu wird?
MfG
Korsakov
edit (jens): Bild eingeblentet
windows konsole
-
- User
- Beiträge: 670
- Registriert: Sonntag 15. Januar 2006, 18:42
- Wohnort: Celle
- Kontaktdaten:
Nein. Du mußt jedes mal angeben wie die neue Farbe aussehen will. Im Endeffekt wirds darauf hinauslaufen dass Du eine ANSI-Escape-Sequenz schickst um etwas farbig zu machen, und nachdem Du den String ausgegeben hast der farbig sein soll, wieder eine Sequenz schickst, um die Farbe wieder auf den Standard zurückzustellen. Das ganze kannst Du natürlich in eine Funktion verpacken, die die Start-/End-Sequenz automatisch erstellt, und Dir dadurch Code beim Ausgeben sparen, aber nichtsdestotrotz kannst Du anders keine Farben in einer Konsole bauen.
--- Heiko.
-
- User
- Beiträge: 670
- Registriert: Sonntag 15. Januar 2006, 18:42
- Wohnort: Celle
- Kontaktdaten:
Ist vernachlässigbar, würd ich erst mal schätzen.
Hier gilt natürlich wie immer: testen, und nur dann optimieren wenn's wirklich zu langsam ist, nicht im Vorfeld sinnlos probieren Optimierungen einfließen zu lassen die alles nur komplizierter machen als es sein müßte.
Hier gilt natürlich wie immer: testen, und nur dann optimieren wenn's wirklich zu langsam ist, nicht im Vorfeld sinnlos probieren Optimierungen einfließen zu lassen die alles nur komplizierter machen als es sein müßte.
--- Heiko.
okay
was mich noch interessieren würde, wie genau man "frames" (zumindest sieht es so aus) in der konsole macht. z.b. wenn ich:
steht bei mir immer unten in der konsole: -Fortsetzen-
bis der text fertig ist. genau das gleiche würde ich gern mit eigenen text machen, allerdings fällt mir nix ein das mit WConio hinzukriegen (ansatzweise ja, aber nicht wie ich das wirklich realisieren kann).
MfG
Korsakov
was mich noch interessieren würde, wie genau man "frames" (zumindest sieht es so aus) in der konsole macht. z.b. wenn ich:
Code: Alles auswählen
import sys
help(sys)
bis der text fertig ist. genau das gleiche würde ich gern mit eigenen text machen, allerdings fällt mir nix ein das mit WConio hinzukriegen (ansatzweise ja, aber nicht wie ich das wirklich realisieren kann).
MfG
Korsakov
-
- User
- Beiträge: 670
- Registriert: Sonntag 15. Januar 2006, 18:42
- Wohnort: Celle
- Kontaktdaten:
Ganz einfach.
Immer nur x Zeilen ausgeben (wobei x = Konsolenhöhe-1, 24 ist ein guter Richtwert), dann -Fortsetzen- auf eine eigene Zeile ausgeben, und dann wenn eine Taste gedrückt wurde "\r" gefolgt durch die neuen Daten (auch wieder nur x Zeilen maximal) ausgeben. Braucht man nicht mal irgendwelche ANSI-Escape-Sequenzen für.
Immer nur x Zeilen ausgeben (wobei x = Konsolenhöhe-1, 24 ist ein guter Richtwert), dann -Fortsetzen- auf eine eigene Zeile ausgeben, und dann wenn eine Taste gedrückt wurde "\r" gefolgt durch die neuen Daten (auch wieder nur x Zeilen maximal) ausgeben. Braucht man nicht mal irgendwelche ANSI-Escape-Sequenzen für.
--- Heiko.
irgendwie komme ich nicht ganz klar das ganze elegant in code umzusetzen:
das returnt mir immer ein "None" bei den beiden funktionen :-/
Code: Alles auswählen
import WConio
print WConio.textcolor(14), 'test string', WConio.textcolor(15)
Hallo,
der Rueckgabewert der Funktion textcolor() ist None, und der wird auch korrekterweise angezeigt. Mit einer kleinen Aenderung sollte es aber klappen:
Gruss, Helmut
der Rueckgabewert der Funktion textcolor() ist None, und der wird auch korrekterweise angezeigt. Mit einer kleinen Aenderung sollte es aber klappen:
Code: Alles auswählen
import WConio
WConio.textcolor(14)
print 'test string'
WConio.textcolor(15)
print "normal"
-
- User
- Beiträge: 670
- Registriert: Sonntag 15. Januar 2006, 18:42
- Wohnort: Celle
- Kontaktdaten:
Deswegen sag ich doch, mach 'ne Funktion draus, die dann in einer Zeile das für Dich erledigt was Du mittels WConio in drei Zeilen machen müsstest:
Code: Alles auswählen
import sys
def printcolor(color,data):
WConio.textcolor(color)
sys.stdout.write(data)
WConio.textcolor(15)
printcolor(14,"hallo, wie gehts? ")
printcolor(12,"mir geht's heute gut.")
--- Heiko.