簡體   English   中英

如何刪除tkinter中canvas.create_text()中文本的最后一個字符?

[英]How to delete the last character of text in canvas.create_text() in tkinter?

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 文本的字符。

語法: 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()

要實現這一點,您可以配置已有的項目。

為此,您首先需要 canvas 的itemcget方法,然后將字符串切片並通過itemconfig的 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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM