如何将tk.Entry的get()、insert()和delete()函数替换为canvas.create_text



在Vkeyboard中,退格键(<-(用于删除最后键入的文本。我使用tk.Entry小部件从web中获得了如下所示的代码。

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上的键时显示文本的条目。

现在,我想用canvas.create_text更改tk.Entry,所以我写的删除文本中最后一个键入的字符的代码如下,

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到END删除它,所以它会删除整行。尝试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()

最新更新