Seite 1 von 1

Text in einem Entryfeld rückwärts löschen.

Verfasst: Dienstag 31. Mai 2022, 15:37
von MatthiDbr
Ich möchte ein Entry Feld von hinten löschen da je nach Dateiauswahl der Pfad größer oder kleiner wird. Mit (END, -10) klappt das aber leider nicht.
Wie kann ich das machen?

Code: Alles auswählen

def openFile():
    filepath = filedialog.askopenfilename(initialdir=".", title="Open file okay?", filetypes= (("zip","*.zip"), ("all files","*.*")))
    file = open(filepath,'r')
    entry1.insert(0, file)
    entry1.delete(0, 25)
    entry1.delete(END, -10)

button1 = Button(main_window, text="Open the ZIP", command=openFile, justify="right")
button1.pack()

entry1 = ttk.Entry(main_window)
entry1.pack()

Re: Text in einem Entryfeld rückwärts löschen.

Verfasst: Dienstag 31. Mai 2022, 16:09
von __blackjack__
@MatthiDbr: Es gibt keine negativen Indizes bei `delete()`. Das musst Du selbst ausrechnen. Letztlich benutzt man aber auch keine Anzeigeelemente für Zeichenkettenbearbeitung, denn das kürzen kann man problemlos machen bevor man den Wert in das Eingabefeld einfügt.

Es ist auch nicht besonders sinnvoll die Zeichenkettenrepräsentation eines Dateiobjekts als Text in einem Eingabefeld darzustellen.

Sonstige Anmerkungen: Namen werden in Python klein_mit_unterstrichen geschrieben. Ausnahmen sind Konstanten (KOMPLETT_GROSS) und Klassennamen (PascalCase).

Man nummeriert keine Namen. Man sich da entweder bessere Namen überlegen, oder keine Einzelnamen sondern eine Datenstruktur verwenden. Oft eine Liste.

Auf Modulebene sollte nur Code stehen, der Konstanten, Funktionen, und Klassen definiert. Das Hauptrogramm steht üblicherweise in einer Funktion die `main()` heisst.

Funktionen bekommen alles was sie ausser Konstanten benötigen, als Argument(e) übergeben.

Das bedeutet, dass man bei GUI-Programmierung nicht um objektorientierte Programmierung (OOP) herum kommt. Oder zumindest `functools.partial()` für triviale Fälle.