【发布时间】:2021-10-14 23:15:41
【问题描述】:
我希望滚动条同时滚动tk.Text。我尝试了很多东西,比如 tk.Scrollbar: (command=self.multiple_scroll) 的函数和这个当前配置:
self.reader = tk.Toplevel(self)
self.reader.title("XXX")
self.reader.resizable(False, True)
self.reader.geometry("650x500")
self.reader.minsize(650,150)
self.panel = tk.Text(self.reader, wrap="word", width=12, font=('Courier',14))
self.viewer = tk.Text(self.reader, wrap="word", font=('Courier',14))
self.scrollbar = tk.Scrollbar(self.reader, command=(self.panel.yview, self.viewer.yview))
self.panel.configure(yscrollcommand=self.scrollbar.set)
self.viewer.configure(yscrollcommand=self.scrollbar.set)
self.scrollbar.pack(side="right", fill="y")
self.panel.pack(side="left", fill="both", expand=True)
self.viewer.pack(side="bottom", fill="both", expand=True)
当我使用滚轮滚动时,光标下的文本会移动,但不会移动另一个。我需要将两个tk.Text 分开。
【问题讨论】:
-
command=(self.panel.yview, self.viewer.yview)不执行self.panel.yview和self.viewer.yview。您可以改用lambda:command=lambda *args: (self.panel.yview(*args), self.viewer.yview(*args))。对于鼠标滚轮问题,您需要在self.panel和self.viewer上绑定<MouseWheel>并滚动绑定回调中的两个文本框。除了鼠标滚轮问题,当其中一个文本框被键盘滚动时,您还需要同步两个框。 -
@acw1668 最后你不应该将 lambda 用于多个函数调用,只需定义一个单独的函数并调用它
标签: python tkinter tk tkinter-text