[Python-de] Zeilenumbruch im Tkinter/Button

Georg Mischler schorsch at schorsch.com
Mon Apr 1 09:54:18 EST 2002


Albert Hermeling wrote:

> Was ich jetzt nicht verstehe, wo und wie sollen die echten Newlines
> reingeschrieben werden und warum solte Python das dann anders Behandeln als
> dieses "\n" Newline? Schlisslich sind das "010" auch nur ein ASCII Werte,
> oder anders gesagt wie sag ich es Python das das jetzt ein Newline ist?


Wenn du in deiner eingelesene Datei die zwei (!) Zeichen "\n"
(Rueckwaerts-Schraegstrich + n) drinstehen hast, dann wird das
nachher auch so im Label des Button auftauchen. Wenn du den
String in der Datei mit einem echten Zeilenumbruch schreibst,
dann wird auch das Label umgebrochen.  Python behandelt diese
beiden Dinge darum unterschiedlich, weil sie eben verschiedene
Dinge sind. Es kann ja an dieser Stelle nicht wirklich wissen,
dass du eigentlich etwas anderes meinst, als du geschrieben hast.
Die Zeichen in einer Datei werden einfach so eingelesen, wie sie
da drin stehen.

Die Verwirrung kommt daher, dass Python einen String, der ohne
weitere Qualifizierung im Sourcecode des Programms drinsteht,
anders behandelt. In diesem Fall wird die Sequenz "\n" als
ein ASCII newline interpretiert. Du kannst das auch durch den
Einsatz eines r"Raw-Strings" unterbinden (genau, mit einem
vorangestellten "r"). Die Umwandlung ist in der Syntaxdefinition
von Python festgelegt, damit man kurze Strings im Code auf einer
Zeile schreiben kann, weil in einer sehr fruehen Version von
Python keine echten newlines in einem Inline-String erlaubt
waren (vor der Einfuehrung der """string""" Schreibweise).

Eine seperat eingelesene Textdatei unterliegt natuerlich nicht
den Python Syntaxregeln. Wenn das von dir definierte Format
dieser Datei es zu kompliziert oder unmoeglich macht, die
einzelnen Strings mit einem echten Zeilenumbruch zu schreiben,
dann ist tatsaechlich dem Fritz sein Vorschlag am sinnvollsten.
Du definierst damit praktisch dein Format so, dass es fuer "\n"
den gleichen Syntaxregeln folgt wie Python. Die Arbeit dazu musst
du aber mit einer expliziten Ersetzungsoperation selber machen.

Soviel zur Theorie, die Praxis scheint ja schon zu funktionieren... ;)


-schorsch

-- 
Georg Mischler  --  simulations developer  --  schorsch at schorsch.com
+schorsch.com+  --  lighting design tools  --  http://www.schorsch.com/




More information about the Python-de mailing list