目的
设置滚动条滑块的位置,滑块可以随绑定控件(可滚动控件)中的内容位置的变化而变动。
代码解析
查找了相关资料,都是说使用scrollbar.set() 函数设置滑块的位置,但是没有看着具体的示例(可能是自己没有找到)。
在主函数中使用scrollbar.set() ,好像不起作用。只有绑定按钮控件,通过点击按钮,调用函数set_pos(),才可以设置滑块的位置,但是对应的文本内容没有移动。通过查看class YView。发现该类下面有一个yview_moveto()函数,参数fraction(分数,取值范围0-1).通过调用该函数,可以实现文本内容位置的变动,同时能带动滑块位置的变动。
class YView截图
完整示例代码
import tkinter as tk
def set_pos(event):
# scrollbar.set(0.5, 0.5) # 设置滑块的位置,范围从 0.0 到 1.0
#设置文本的位置,滚动条的滑块会自动滚动到对应位置。0.5 表示中间位置
text_box.yview_moveto(0.5)
root = tk.Tk()
# 创建一个文本框
text_box = tk.Text(root)
text_box.pack(side=tk.LEFT, fill=tk.BOTH)
for i in range(200):
text_box.insert("end", f"测试文本{i}\n")
# 创建一个滚动条
scrollbar = tk.Scrollbar(root)
scrollbar.pack(side=tk.LEFT, fill=tk.Y)
# 相互绑定
text_box.config(yscrollcommand=scrollbar.set)
scrollbar.config(command=text_box.yview)
butt = tk.Button(root, text="点我")
butt.pack(side=tk.LEFT)
butt.bind("<Button-1>", set_pos)
# 在主函数中直接添加一下代码,也可以设置滑块的位置。
# text_box.yview_moveto(0.5)
root.mainloop()