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

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

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

【问题讨论】:

    标签: python tkinter cursor-position


    【解决方案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)

      【讨论】:

        猜你喜欢
        • 2014-03-18
        • 1970-01-01
        • 2016-04-30
        • 1970-01-01
        • 1970-01-01
        • 2023-03-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多