我需要同步两个滚动条。它们都管理不同的文本小部件,当我在第一个小部件中滚动时,我希望在第二个窗口看到相同的行为。我不想使用一个滚动条,它们都必须是同步的。我怎么能实现我的目标?下面是一个简单的示例代码(这里的滚动条不是同步的)。帮我修好它。多谢你们的支持。
import tkinter as tk
root = tk.Tk()
file1data = ("ciao\n"*100)
S1 = tk.Scrollbar(root)
S1.grid(row=0, column=1,sticky=tk.N + tk.S + tk.E + tk.W)
template1 = tk.Text(root, height=25, width=50,wrap=tk.NONE, yscrollcommand=S1.set)
template1.grid(row=0, column=0)
template1.insert(tk.END, file1data)
S1.config(command=template1.yview)
S2 = tk.Scrollbar(root)
S2.grid(row=0, column=3,sticky=tk.N + tk.S + tk.E + tk.W)
template2 = tk.Text(root, height=25, width=50, wrap=tk.NONE, yscrollcommand=S2.set)
template2.grid(row=0, column=2)
template2.insert(tk.END, file1data)
S2.config(command=template2.yview)
tk.mainloop()发布于 2022-11-30 23:12:22
您可以通过编写一个函数来实现这一点:
def sync_scroll(*args):
template1.yview(*args)
template2.yview(*args)并将滚动条设置为此命令。
S1.config(command=sync_scroll)
S2.config(command=sync_scroll)sync_scroll将由已经计算好的位置的每个滚动条触发,并使用命令或scroll命令镜像它的位置。xview也是如此。基本上,他们所做的就是计算相对位置或解析适当的参数,并使用moveto或滚动命令来配置视图。如果您决定有一个绑定到鼠标轮,您可以使用相同的机械师来实现这在另一个方向。
编辑:
感谢@acw1668 1668指出该函数在此代码的缩短版本之前没有覆盖箭头按钮。
https://stackoverflow.com/questions/74635102
复制相似问题