Impressum
< Index

GUI - Text

Eine Text-Komponente ist ein Gui-Element (Widget), mit dem man einen mehrzeiligen Text eingeben und anzeigen kann.
In einem Text-Widget kann man auch formatierten Text mit Bildern anzeigen. Wir werden hier jedoch nur die Grundlagen für unformatierten Text betrachten.
Die wichtigsten Eigenschaften:
  • width Breite in Buchstaben
  • height Höhe in Zeilen
  • state kann NORMAL oder DISABLED sein.
    Im Normal-Zustand kann man den Text bearbeiten, im Disabled-Zustand nur lesen.
  • undo Wenn diese Option auf True gesetzt wird kann man mit STRG+Z rückgängig und mit wiederherstellen machen
  • wrap Steuert den Umbruch, falls eine Zeile über den rechten Rand hinausragt.
    Die Optionen sind:
    • NONE Kein Umbruch
    • WORD Umbruch an Wortgrenzen (wenn ein Wort zu lang ist auch innerhalb)
    • CHAR Umbruch vor dem Buchstaben, der über den Rand ragen würde.
  • xscrollcommand Wenn man Scrollbalken verwendet, muss der horizontale Scrollbar hier angegeben werden
  • yscrollcommand Wenn man Scrollbalken verwendet, muss der vertikale Scrollbar hier angegeben werden
Die wichtigsten Methoden:
  • get(start, ende) Liefert den Text zwischen start und ende zurück (ende ist optional).
    Start und Ende werden als String mit "Zeile.Spalte" angegeben werden.
    Zeilen starten bei 1 und Spalten bei 0.
    Es kann auch die Konstante end verwendet werden (für Zeilenenden oder das Textende).
  • delete(start, ende) Löscht den Text zwischen start und ende.
  • insert(pos, string) Fügt an der Position pos den Text s ein.
    Die Position wird als "end" oder "Zeile.Spalte" eingegeben
  • set(...) existiert nicht, hier muss man zuerst mit delete("1.0") den kompletten Text löschen und dann mit insert("1.0", s) einfügen.
  • edit_undo() Macht die letzte Veränderung des Textes rückgängig.
  • edit_redo() Stellt die zuletzt rückgängig gemachte Veränderung wieder her.
Einfaches Beispiel
from tkinter import *

class Fenster(Tk):
    def __init__(self):
        Tk.__init__(self)
        self.option_add("*Font", "aerial 20")        
        
        self.t = Text(self, width=10, height=4, wrap=NONE)
        
        self.t.pack()        
        self.b = Button(self, text="drück drauf", command=self.click)
        self.b.pack()
        
    def click(self): # gibt den Text aus 
        print(self.t.get("1.0", END))
f = Fenster()
f.mainloop()

Scrollbalken

Wenn der Text größer wird als die dargestellte Fläche des Text-Widgets, sind Scrollbalken hilfreich.
Das Text-Widget bringt diese jedoch nicht mit, sondern es müssen zwei Scrollbar-Widgets erzeugt werden.
Vorgehen:
Text mit Scrollbalken
Text mit Scrollbalken
Text mit Scrollbalken
class Fenster(Tk):
    def __init__(self):
        Tk.__init__(self)
        self.option_add("*Font", "aerial 20")        
        scrollx = Scrollbar(self, orient="horizontal")
        scrolly = Scrollbar(self, orient="vertical")
        self.t = Text(self, width=10, height=4, wrap=NONE,
                    xscrollcommand=scrollx.set,
                    yscrollcommand=scrolly.set
                    )
        scrollx.config(command=self.t.xview)
        scrolly.config(command=self.t.yview)
        
        scrolly.pack(fill="y", side=RIGHT)
        self.t.pack()
        scrollx.pack(fill="x", side=TOP)