#python #python-3.x #tkinter #tkinter-canvas #tkinter-entry
#питон #python-3.x #tkinter #tkinter-холст #tkinter-запись
Вопрос:
В Vkeyboard клавиша backspace (<-) используется для удаления последнего введенного текста. Я получил веб-форму кода, в которой приведен пример использования tk.Entry
виджета следующим образом.
input = canvas.get(self.canvas_textbox, "1.0", 'end-2c')
self.canvas_textbox.delete("1.0", END)
self.canvas_textbox.insert("1.0", input, END)
где self.canvas_textbox
находится запись, которая отображает текст, когда пользователь нажимает клавиши на Vkeyboard.
Теперь я хотел изменить tk.Entry
with canvas.create_text
, поэтому я написал код для удаления последнего введенного символа в тексте следующим образом,
input = canvas.itemcget(self.canvas_textbox, "text")
canvas.delete(self.canvas_textbox,"1.0", END)
canvas.insert(self.canvas_textbox, input, "1.0",END)
Но, к сожалению, это приводит к удалению всего текста, а не только последнего введенного символа.
Кто — нибудь может сказать мне , почему ?
Ответ №1:
Извините за мой плохой английский.
Вы удаляете его от 1 до КОНЦА, чтобы удалить всю строку. Попробуйте len(entry.get()) - 1, END
. Он получает цифры того, сколько символов находится внутри записи (от начала до конца) — 1, поэтому он получает последние 2 числа.
Пример кода:
from tkinter import *
root = Tk()
def dellastword():
entry.delete(len(entry.get()) - 1, END)
entry = Entry(root, width=20)
entry.pack()
button = Button(root, text='Delete Last Word', width=100, height=3, command=dellastword)
button.pack()
root.mainloop()