在文本小部件中设置光标位置
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中设置光标位置