【问题标题】:How to replace get(), insert() and delete() functions of tk.Entry to canvas.create_text?如何将 tk.Entry 的 get()、insert() 和 delete() 函数替换为 canvas.create_text?
【发布时间】:2020-12-25 11:48:28
【问题描述】:

在 Vkeyboard 中,退格 (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改成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)

但不幸的是,它会删除整个文本,而不仅仅是最后输入的字符。

谁能告诉我为什么?

【问题讨论】:

    标签: python python-3.x tkinter tkinter-canvas tkinter-entry


    【解决方案1】:

    对不起,我的英语不好。

    您将其从 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()
    

    【讨论】:

      猜你喜欢
      • 2015-01-08
      • 2022-08-03
      • 1970-01-01
      • 2015-07-20
      • 2023-04-04
      • 1970-01-01
      • 2022-01-11
      • 2020-02-02
      • 1970-01-01
      相关资源
      最近更新 更多