首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何删除tkinter中canvas.create_text()中文本的最后一个字符?

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

Stack Overflow用户
提问于 2020-12-25 13:44:30
回答 2查看 395关注 0票数 1

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)

请大家帮帮我!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-25 13:58:07

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

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

在这里可以找到一个有用的使用示例:

代码语言:javascript
运行
复制
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()
票数 1
EN

Stack Overflow用户

发布于 2020-12-25 14:25:16

画布--一种名为dchars()的方法,您可以使用它来删除画布文本的字符。

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

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

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

代码语言:javascript
运行
复制
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()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65448629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档