i

Ein Textfeld

Verwaltung mehrzeiliger Texte

Wenn man längere Texte eingeben und darstellen möchte, dann reicht ein einzeiliges Eingabefeld (vom Typ Entry) bzw. ein einzeiliges Schriftfeld (vom Typ Label) hierzu nicht aus. Man benötigt eine sogenanntes Textfeld (vom Typ Text).

Anwendungsfenster

Objekte der Klasse Text bieten eine Vielzahl an Möglichkeiten zur Textdarstellung und Textverarbeitung. Wir werden im folgenden Programm nur einfachste Möglichkeiten aufzeigen.

from tkinter import *
# Ereignisbehandlung

def buttonVerschluesselnClick():
    klartext = textfeld1.get('1.0', 'end').strip()
    geheimtext = ''
    for zeichen in klartext:
        zahl = ord(zeichen)
        neuezahl = zahl + 3
        if neuezahl > ord('Z'):
            neuezahl = neuezahl - 26
        neuesZeichen = chr(neuezahl)
        geheimtext = geheimtext + neuesZeichen
    textfeld2.delete('1.0', 'end')
    textfeld2.insert('1.0', geheimtext)

def buttonEntschluesselnClick():
    geheimtext = textfeld2.get('1.0', 'end').strip()
    klartext = ''
    for zeichen in geheimtext:
        zahl = ord(zeichen)
        neuezahl = zahl - 3
        if neuezahl < ord('A'):
            neuezahl = neuezahl + 26
        neuesZeichen = chr(neuezahl)
        klartext = klartext + neuesZeichen
    textfeld1.delete('1.0', 'end')
    textfeld1.insert('1.0', klartext)

def buttonLoeschenQuelltextClick():
    textfeld1.delete('0.0', 'end')

def buttonLoeschenGeheimtextClick():
    textfeld2.delete('0.0', 'end')
        
# Fenster
tkFenster = Tk()
tkFenster.title('Textverarbeitung')
tkFenster.geometry('360x194')
# Textfelder
textfeld1 = Text(master=tkFenster, width=39, height=4, wrap='word')
textfeld1.place(x=8, y=8)
scrollbar1 = Scrollbar(master=tkFenster)
scrollbar1.place(x=342, y=8, width=10, height=68)
textfeld1.config(yscrollcommand=scrollbar1.set)
scrollbar1.config(command=textfeld1.yview)
textfeld2 = Text(master=tkFenster, width=39, height=4, wrap='word')
textfeld2.place(x=8, y=118)
scrollbar2 = Scrollbar(master=tkFenster)
scrollbar2.place(x=342, y=118, width=10, height=68)
textfeld2.config(yscrollcommand=scrollbar2.set)
scrollbar2.config(command=textfeld2.yview)
# Button
buttonLaden = Button(master=tkFenster, text='verschlüsseln',
                     command=buttonVerschluesselnClick)
buttonLaden.place(x=96, y=88, width=80, height=20)
buttonSpeichern = Button(master=tkFenster, text='entschlüsseln',
                         command=buttonEntschluesselnClick)
buttonSpeichern.place(x=184, y=88, width=80, height=20)
buttonLoeschenQuelltext = Button(master=tkFenster, text='löschen',
                                 command=buttonLoeschenQuelltextClick)
buttonLoeschenQuelltext.place(x=8, y=88, width=80, height=20)
buttonLoeschenGeheimtext = Button(master=tkFenster, text='löschen',
                                  command=buttonLoeschenGeheimtextClick)
buttonLoeschenGeheimtext.place(x=272, y=88, width=80, height=20)
# Aktivierung des Fensters
tkFenster.mainloop()

Die Übersicht zeigt die im Programm verwendeten Methoden der Klasse Text.

Methode Bedeutung
get(index1, index2) Liefert den Text von index1 bis index2 als Zeichenkette zurück. Wenn index2 fehlt, dann wird nur das Zeichen an der Stelle index1 zurückgegeben.
delete(index1, index2) Löscht alle Zeichen von index1 bis index2. Wenn index2 fehlt, dann wird nur das Zeichen an der Stelle index1 gelöscht.
insert(index, text) Fügt den übergebenen Text an der übergebenen Indexposition ein.

Beachte, dass die insert-Methode am Ende immer noch einen Zeilenumbruch einfügt. Im Programm oben wird dieser Zeilenumbruch mit der strip-Methode wieder entfernt.

Beachte die Darstellung von Posotionen. Die Zeichenkette 'end' steht für die letzte Position im Textfeld. Die Zeichenkette '1.0' steht für die Position "1. Zeile, 0. Spalte". Beachte, dass die Zeilennummerierung bei einem Textfeld mit 1, die Spaltennummerierung dagegen mit 0 beginnt.

Aufgabe 1

Experimentiere mit dem Programm.

Suche

v
9.1.4.12
dev.inf-schule.de/software/gui/entwicklung_tkinter/textfeld
dev.inf-schule.de/9.1.4.12
dev.inf-schule.de/@/page/3hGVPiTFnW1e3zpj

Rückmeldung geben