[英]Python tkinter text widget delete function doesn't work correctly
delete
方法的第一個參數必須是要刪除的字符之前的索引。 如果要刪除緊接插入cursor之前的字符,可以使用索引"insert-1c"
(插入點,減去一個字符)。
entt.delete("insert-1c")
對於這種情況,文本小部件不是一個很好的小部件。 但是,對於您需要的內容,您可以使用標准子字符串來完成相同的工作。
def back_slash_click():
txt = entt.get('1.0', END)
entt.delete('1.0', END)
end.insert('1.0', txt[:-2])
注意:文本小部件會自動將“ \n
”添加到 get() 的末尾,這就是我從 txt 中刪除 2 個字符的原因。
Text.index(END) 由於自動添加的 ' \n
',總是返回行數 +1
更好的答案
索引的數字是 line.character:可以不刪除並重新插入文本,但您需要獲取文本,計算行數和最后一行中的字符數,然后從最后一行中減去 2字符數
您可以使用ind = int(widget.index(END))-1
輕松找到最后一行並獲取最后一行並使用len(widget.get(ind, END))
獲取字符數
這可以用在這個 function 中來做同樣的工作。
def delete_last_char(widget):
ind = float(widget.index(END))-1.0 ##get the last line
txt = len(widget.get(ind, END))-2 ##get the character count and -2
rmv = float(f'{int(ind)}.{txt}') ## format this into an accepted float
widget.delete(rmv, END) ##delete that index range from the widget
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.