在文本小部件中设置光标位置

Posted

技术标签:

【中文标题】在文本小部件中设置光标位置【英文标题】:Set cursor position in a Text widget 【发布时间】:2011-03-14 00:48:28 【问题描述】:

是否可以在 Tkinter Text 小部件中设置光标位置?我还没有发现任何非常有用的东西。

我能做的最好的事情是在某个 x-y 坐标处发出 <Button-1><ButtonRelease-1> 事件,但这是一个像素数量,而不是字母数量。

【问题讨论】:

【参考方案1】:

如果“text”、“line”和“column”是您的文本对象,则所需的文本行和所需的列变量分别是:

text.mark_set("insert", "%d.%d" % (line + 1, column + 1))

如果您不想关心行号...好吧,您必须这样做。

The Tkinter Text Widget 上的完整文档。

【讨论】:

完美!我认为它可能在这些方面的某个地方,但我无法弄清楚。有没有获取当前光标位置的相关方法? @Wayne Werner:“index”方法将返回任何位置的索引,包括插入光标:text.index("insert") effbot.org 链接已经断开很长时间了。 :( 谢谢。将其指向 archive.org 备份的内容。【参考方案2】:

要设置光标位置,您可以使用text_widget.mark_set 方法,使用"insert"(或Tkinter.INSERT 表示“常量”)第一个参数,第二个参数是多种形式之一,最有用存在:

"%d,%d" % (line, column),其中行从 1 开始,列从 0 开始 "1.0+%d chars" % index,其中索引是从 0 开始的,就像 Python 中的字符串/unicode 索引一样

要获取某个标记的索引,可以使用text_widget.index方法:

text_widget.index(Tkinter.INSERT)

【讨论】:

【参考方案3】:

此属性仅适用于 Text Widget,因为我们可以使用 Entry Widget:

entry_widget_name.icursor("position")

对于文本小部件将是:

text_widget_name.mark_set("insert", "%d.%d" % (x,y))

其中 x = 行位置 y = 列位置

(例如使用带点的整数,例如 1.0 或 3.0)

【讨论】:

以上是关于在文本小部件中设置光标位置的主要内容,如果未能解决你的问题,请参考以下文章

在文本区域中设置文本光标位置

jquery在contenteditable div中设置光标位置

在 SwiftUI TextEditor 中设置光标位置

想要在 Flex 的 Spark textinput 控件中设置光标位置

如何在 QML 中设置鼠标光标位置

如何在 QT Designer 中指定默认文本光标小部件