[英]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.