首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将tkinter文本小部件的插入光标移动到某个索引

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

Stack Overflow用户
提问于 2020-09-02 15:14:49
回答 1查看 723关注 0票数 0

我想将插入光标(插入符号)(|)移到tkinter文本小部件中,移到特定的文本小部件中。

用例:

我正在制作一个自动完成程序,如果我输入一个单撇号(引号),另一个会自动插入到文本小部件中,这样我就可以很好地工作了。但是之后,生成了第二个撇号,我希望在两个撇号的中间,而不是在末尾,带插入光标(插入符)。就像这样,-:

输入一个撇号(在tkinter文本小部件中) -:

代码语言:javascript
复制
'[insertion cursor(caret)(|)]

另一种是自动插入,将插入光标(插入符)推到末尾(直到我成功地计算出这部分的代码)。) -:

代码语言:javascript
复制
''[insertion cursor(caret)(|)]

插入光标(插入符号)在两个撇号(此问题的目标)之间移动。) -:

代码语言:javascript
复制
'[insertion cursor(caret)(|)]'

注意:这些操作都是在tkinter文本小部件中进行的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-02 15:42:22

调用mark_set方法,使用"insert“作为标记的名称。

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

下面是一个自动插入结束括号或括号的方法的示例。在本例中,代码同时插入开始字符和结束字符,从而返回“中断”,以防止文本小部件提供的默认行为。

代码语言:javascript
复制
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()
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63708507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档