windows konsole

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.
Korsakov
User
Beiträge: 15
Registriert: Samstag 8. April 2006, 20:03

windows konsole

Beitragvon Korsakov » Samstag 8. April 2006, 20:41

hi

ich möchte meinen konsolen anwendungen (mit py2exe erstellt) farbe verpassen wie etwa hier zu begutachten: Bild

im forum gibts dazu schon einen thread (http://www.python-forum.de/viewtopic.php?t=2390&highlight=windows+win+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
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Beitragvon modelnine » Samstag 8. April 2006, 23:27

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.
Korsakov
User
Beiträge: 15
Registriert: Samstag 8. April 2006, 20:03

Beitragvon Korsakov » Samstag 8. April 2006, 23:40

achso, wie wirkt sich das auf die geschwindigtkeit von meinen anwendungen aus, habe sehr viel text auszugeben?
Zuletzt geändert von Korsakov am Samstag 8. April 2006, 23:58, insgesamt 4-mal geändert.
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Beitragvon modelnine » Samstag 8. April 2006, 23:52

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. ;-)
--- Heiko.
Korsakov
User
Beiträge: 15
Registriert: Samstag 8. April 2006, 20:03

Beitragvon Korsakov » Samstag 8. April 2006, 23:59

okay :-)

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)


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
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Beitragvon modelnine » Sonntag 9. April 2006, 00:02

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.
--- Heiko.
Korsakov
User
Beiträge: 15
Registriert: Samstag 8. April 2006, 20:03

Beitragvon Korsakov » Sonntag 9. April 2006, 00:07

super, vielen dank für die schnelle hilfe, dann mache ich mich mal ans werk. danke nochmals :D
Korsakov
User
Beiträge: 15
Registriert: Samstag 8. April 2006, 20:03

Beitragvon Korsakov » Sonntag 9. April 2006, 07:20

irgendwie komme ich nicht ganz klar das ganze elegant in code umzusetzen:

Code: Alles auswählen

import WConio

print WConio.textcolor(14), 'test string', WConio.textcolor(15)


das returnt mir immer ein "None" bei den beiden funktionen :-/
helmut
User
Beiträge: 57
Registriert: Mittwoch 2. November 2005, 07:45
Wohnort: Dormagen

Beitragvon helmut » Sonntag 9. April 2006, 09:07

Hallo,

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"

Gruss, Helmut
Korsakov
User
Beiträge: 15
Registriert: Samstag 8. April 2006, 20:03

Beitragvon Korsakov » Sonntag 9. April 2006, 10:34

genau so möchte ich es nicht, habe leider viel viel text auszugeben und veränder oft die farben.
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Beitragvon modelnine » Sonntag 9. April 2006, 10:37

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.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder