Как удалить последний символ из виджета Text() tkinter?
Как удалить последний символ в строке ввода Expression при нажатии кнопки Clear_symbol? Попробовал указать индекс словом END, но это не дало результата
from tkinter import *
root = Tk()
root.title('Python')
root.geometry('158x55')
root.resizable(width = False, height = False)
def Clear_symbol_Act():
Expression.delete(END)
First_line = Frame(root, background='olivedrab')
Clear_symbol = Button(First_line, text = "←", background = "#555",
foreground = "white",font = "25", width = 3,
height = 1, command = Clear_symbol_Act)
Expression = Text(First_line, background = "silver", foreground = "black",
width = 17, height=3)
Clear_symbol.pack(side = LEFT, padx = 2, pady = 2)
Expression.pack(side = LEFT, padx = 2, pady = 2)
First_line.pack(anchor = W)
root.mainloop()
Ответы (2 шт):
Автор решения: denisnumb
→ Ссылка
Встроенных вариантов вроде как нет, так что можно сделать так:
- Получаем текущий текст и удаляем 2 последних символа. Именно 2, потому что самый последний символ это -
\n- символ переноса строки. - Очищаем строку полностью и добавляем в нее текст без последнего символа.
Код:
def Clear_symbol_Act():
text = Expression.get(1.0, END)[:-2]
Expression.delete(1.0, END)
Expression.insert(END, text)
Автор решения: Spatz
→ Ссылка
delete ожидает два индекса: начало и конец удаляемой строки (конец удаляемой строки можно не указывать - будет удален один символ). END указывает на позицию за символом новой строки (добавляется автоматически), "end-1c" на позицию перед ним, а "end-2c" на позицию перед последним символом.
Expression.delete("end-2c")
