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

Fragen zu Tkinter.
Antworten
MatthiDbr
User
Beiträge: 4
Registriert: Dienstag 10. Mai 2022, 21:48

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()
Benutzeravatar
__blackjack__
User
Beiträge: 13533
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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.

Code: Alles auswählen

- (void)countSheep {
    unsigned int sheep = 0;
    while ( ! [self isAsleep]) { ++sheep; }
}
Antworten