首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tkinter --如何将两个滚动条与两个文本小部件同步以镜像彼此的视图?

Tkinter --如何将两个滚动条与两个文本小部件同步以镜像彼此的视图?
EN

Stack Overflow用户
提问于 2022-11-30 22:55:42
回答 1查看 41关注 0票数 1

我需要同步两个滚动条。它们都管理不同的文本小部件,当我在第一个小部件中滚动时,我希望在第二个窗口看到相同的行为。我不想使用一个滚动条,它们都必须是同步的。我怎么能实现我的目标?下面是一个简单的示例代码(这里的滚动条不是同步的)。帮我修好它。多谢你们的支持。

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

发布于 2022-11-30 23:12:22

您可以通过编写一个函数来实现这一点:

代码语言:javascript
复制
def sync_scroll(*args):
    template1.yview(*args)
    template2.yview(*args)

并将滚动条设置为此命令

代码语言:javascript
复制
S1.config(command=sync_scroll)
S2.config(command=sync_scroll)

sync_scroll将由已经计算好的位置的每个滚动条触发,并使用命令scroll命令镜像它的位置。xview也是如此。基本上,他们所做的就是计算相对位置或解析适当的参数,并使用moveto或滚动命令来配置视图。如果您决定有一个绑定到鼠标轮,您可以使用相同的机械师来实现这在另一个方向。

编辑:

感谢@acw1668 1668指出该函数在此代码的缩短版本之前没有覆盖箭头按钮。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74635102

复制
相关文章

相似问题

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