Eingaben im Feld als Grossbuchstaben anzeigen

Fragen zu Tkinter.
Antworten
KlausP
User
Beiträge: 60
Registriert: Mittwoch 8. Juli 2020, 17:00

Hallo,
in tkinter habe ich Eingabefelder defniert, z.B.
feld_eg_1 = tk.Entry(frame_mid, width=3, bd=1, font=('arial', 15),
textvariable = such.egm_1, bg='pale green', justify="center")
feld_eg_1.grid(column=2, row=2, pady=5) Kann ich irgendwie erreichen, dass der Text gleich automatisch in Großbuchstaben angezeigt wird?
Im späteren Aufruf, kann ich die Variable natürlich per upper() zurücksenden.

Aber in der Zwischenzeit steht da halt "e" und nicht "E"

Gruß, Klaus
Sirius3
User
Beiträge: 18051
Registriert: Sonntag 21. Oktober 2012, 17:20

Dafür kann man sich Event-Handler für Stringvariablen definieren:

Code: Alles auswählen

import tkinter as tk

class Window(tk.Tk):
    def __init__(self):
        super().__init__()
        self.value = tk.StringVar(self)
        self.value.trace('w', self.value_upper)
        tk.Entry(self, textvariable=self.value).pack()

    def value_upper(self, *args):
        self.value.set(self.value.get().upper())


def main():
    window = Window()
    window.mainloop()

if __name__ == "__main__":
    main()
KlausP
User
Beiträge: 60
Registriert: Mittwoch 8. Juli 2020, 17:00

Das gilt dann aber für alle Stringvariablen?
Oder könnte ich es auf einen einzelnen Frame begrenzen?

super().__init__() ... verstehe ich nicht
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wieso sollte das fuer alle Stringvariablen gelten? Das gilt nur fuer die eine.

super().__init__() ruft den Konstruktor der Basisklasse auf. Sonst laeuft der nicht.
Antworten