Python Tkinter ScrolledText,如何在将光标移动到给定行时自动更新滚动条?

Python Tkinter ScrolledText,如何在将光标移动到给定行时自动更新滚动条?,python,tkinter,textbox,Python,Tkinter,Textbox,我有一个Tkinter滚动文本,里面有100行文本: import tkinter, tkinter.scrolledtext root = tkinter.Tk('test') text = tkinter.scrolledtext.ScrolledText(master=root, wrap='none') text.pack(side="top", fill="both", expand=True, padx=0, pady=0) text.insert(tkinter.END, ''.j

我有一个Tkinter
滚动文本
,里面有100行文本:

import tkinter, tkinter.scrolledtext
root = tkinter.Tk('test')
text = tkinter.scrolledtext.ScrolledText(master=root, wrap='none')
text.pack(side="top", fill="both", expand=True, padx=0, pady=0)
text.insert(tkinter.END, ''.join("hello%i\n" % i for i in range(100)))
text.mark_set("insert", "1.1")  # cursor position at the start
text.focus()
root.mainloop()
将光标移动到第50行时:

text.mark_set("insert", "50.1")
光标确实会移动到那里,但滚动条不会相应地更新

问题:当光标位置移动到第n行时,如何自动更新滚动条位置?


文本小部件有一个名为
的方法,请参见
,该方法将滚动到给定的索引

text.mark_set("insert", "50.1")
text.see("insert")
从规范的tcl/tk文档中:

调整窗口中的视图,使索引给定的字符完全可见。如果索引已经可见,则该命令不执行任何操作。如果索引距离视图较短,则该命令将调整视图,使索引在窗口边缘可见。如果索引远离视图,则命令会将索引集中在窗口中


一般解决方案如下所述: