python文本框中文本和滚动条的自动滚动

新手上路,请多包涵

我有一个 tkinter“文本”和“滚动条”工作正常。在我的程序中,文本窗口中的行会自动添加。因此,当插入新的文本行并且数据超出限制时,我希望文本和滚动条自动滚动到底部,以便始终显示最新的文本行。这该怎么做?

还有如何链接文本窗口和滚动条的滚动,因为当我在文本窗口上滚动时不会发生滚动。我观察到的唯一方法是拖动滚动条。

     scrollbar = Tkinter.Scrollbar(group4.interior())
    scrollbar.pack(side = 'right',fill='y')

    Details1 = Output()
    outputwindow = Tkinter.Text(group4.interior(), yscrollcommand = scrollbar.set,wrap = "word",width = 200,font = "{Times new Roman} 9")
    outputwindow.pack( side = 'left',fill='y')
    scrollbar.config( command = outputwindow.yview )
    outputwindow.yview('end')
    outputwindow.config(yscrollcommand=scrollbar.set)
    outputwindow.insert('end',Details1)

在程序中,函数 output() 将不断发送数据,这些数据应该滚动

提前致谢,

原文由 Ds Arjun 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

您可以使用带有索引的 see 使文本小部件滚动到任何位置。

例如,要使小部件的最后一行可见,您可以使用索引 "end"

 outputwindow.see("end")

这是一个完整的工作示例:

 import time
try:
    # python 2.x
    import Tkinter as tk
except ImportError:
    # python 3.x
    import tkinter as tk

class Example(tk.Frame):
    def __init__(self, *args, **kwargs):
        tk.Frame.__init__(self, *args, **kwargs)

        self.text = tk.Text(self, height=6, width=40)
        self.vsb = tk.Scrollbar(self, orient="vertical", command=self.text.yview)
        self.text.configure(yscrollcommand=self.vsb.set)
        self.vsb.pack(side="right", fill="y")
        self.text.pack(side="left", fill="both", expand=True)

        self.add_timestamp()

    def add_timestamp(self):
        self.text.insert("end", time.ctime() + "\n")
        self.text.see("end")
        self.after(1000, self.add_timestamp)

if __name__ == "__main__":
    root =tk.Tk()
    frame = Example(root)
    frame.pack(fill="both", expand=True)
    root.mainloop()

原文由 Bryan Oakley 发布,翻译遵循 CC BY-SA 4.0 许可协议

看看 Text.see(...) 方法。

 TextWidget.insert(tk.END, str(new_txt))
TextWidget.see(tk.END)

I used this pattern to add (aka insert ) text new_txt to my output window and scroll ( see ) to the bottom ( tk.END )

原文由 Mike from PSG 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏