微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 tkinter 中删除 canvas.create_text() 中文本的最后一个字符?

如何解决如何在 tkinter 中删除 canvas.create_text() 中文本的最后一个字符?

self.canvas_textBox = canvas.create_text(290,250,text='SOME TEXT',anchor=NW,fill="lime")

如何删除来自SOME TEXT的文本的最后一个字符,我必须删除最后一个T

我尝试了以下代码,但它删除了整个文本。

canvas.delete(self.canvas_textBox,"1.0",END)

请任何人帮助我!

解决方法

Canvas 一个名为 dchars() 的方法,您可以使用该方法删除画布文本的字符。

语法:canvas.dchars(tagOrId,first,last)

dchars 从一个或多个文本项中删除字符。您可以指定要从哪个索引中删除。例如,canvas.dchars(tag,1,3) 将删除第二、第三和第四个字符。

要删除文本的最后一个字符,请使用 canvas.index(tagOrId,specifier) 获取最后一个字符的索引。说明符 tkiner.END 返回字符串的最后一个索引,然后使用 dchars,如下所示。

from tkinter import *

def update(event):
     canvas.dchars('text',canvas.index('text',END)-1 )
    

window = Tk()
canvas = Canvas(window,width=300,height=300,bd=0)
canvas.pack()

canvas_textbox = canvas.create_text(20,70,text='Text',fill="red",tag='text')
canvas.bind('<Button>',update)

window.mainloop()
,

要实现这一点,您可以配置您已有的项目。

为此,您首先需要画布的 itemcget 方法,然后将字符串切片并通过画布的 itemconfig 方法插入字符串。

可以在此处找到使用的工作示例:

import tkinter as tk

def del_letter():
    old_string = canva.itemcget(c_txt,'text')
    new_string = old_string[:-1]
    canva.itemconfig(c_txt,text=new_string)

root = tk.Tk()
canva= tk.Canvas(root)
c_txt= canva.create_text(10,10,text='SOME TEXT',anchor='nw')
canva.pack()
butto= tk.Button(root,text='del last letter',command=del_letter)
butto.pack()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。