python - Tkinter ScrolledText,将光标移动到给定行时如何自动更新滚动条?
问题描述
我有一个ScrolledText
装满 100 行文本的 Tkinter:
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行时自动更新滚动条位置?
解决方案
文本小部件有一个名为的方法see
,它将滚动到给定的索引。
text.mark_set("insert", "50.1")
text.see("insert")
从规范的 tcl/tk 文档:
调整窗口中的视图,使index给出的字符完全可见。如果index已经可见,则该命令不执行任何操作。如果index在视图外很短的距离,则该命令会调整视图以使index在窗口边缘可见。如果索引远在视野之外,则命令中心索引在窗口中。
推荐阅读
- reactjs - ReactJS useCallback 不是反应的功能吗?
- angular - MEAN 中的第 3 方 API 调用
- python - 将谷歌数据存储和大查询数据连接在一起
- javascript - reactjs中设置时间间隔的问题
- swift - 更改约束的高度值时出错
- kubernetes - 在牧场主的私有目录中,没有显示模板文件
- email - 用于电子邮件的 amp 中的 amp-list 组件错误
- reactjs - 将 styled-components 导入组件 React 时出错
- mysql - SELECT 子句中的 MySQL 相关子查询
- sql - 分别找出 2019 年新加入者人数最多和最少的月份