如何将 tkinter 文本小部件的插入光标移动到某个索引

Mat*_*mer 0 python text tkinter

我基本上是想知道如何在 tkinter python 中移动文本小部件的插入光标。这是因为我正在检测文本小部件中撇号的按下,当我这样做时,我执行一个函数,该函数添加一个更多的撇号来完成这对基本上就像一个 IDE,在这里我想在它自动完成时做到这一点插入光标不会在最后一个撇号之后结束,而是在它们之间。

目前情况如何 -:

''[插入光标]

我希望它如何发生 -:

'[插入光标]'

也是如此,如果我们写的时候还不清楚我所说的插入光标是什么意思,那么在我们当前的索引处会出现一条垂直线,称为插入光标。如果可以解释它,您也可以将其称为插入符号。

它看起来像这样 -:

|

在我们写的时候它一直在闪烁。

Bry*_*ley 6

您调用该mark_set方法,使用“插入”作为标记的名称。

the_widget.mark_set("insert", "4.0")将插入光标设置在第四行的开头。您可以使用the_widget.mark_set("insert", "insert-1c")将光标向后移动一个字符。

这是自动插入右括号或括号的一种方法的示例。在这个例子中,代码插入了开始和结束字符,所以它返回“break”以防止文本小部件提供的默认行为。

import tkinter as tk

def autocomplete(widget, first, last):
    # insert the two characters at the insertion point
    widget.insert("insert", first + last)

    # move insertion cursor back one character
    widget.mark_set("insert", "insert-1c")

    # prevent the text widget from inserting the character that
    # triggered the event since we've already inserted it.
    return "break"

root = tk.Tk()
text = tk.Text(root, wrap="word")
text.pack(fill="both", expand=True)

text.bind("(", lambda event: autocomplete(event.widget, "(", ")"))
text.bind("[", lambda event: autocomplete(event.widget, "[", "]"))

root.mainloop()
Run Code Online (Sandbox Code Playgroud)