python文本框中文本和滚动条的自动滚动
我有一个tkinter“文本”和“滚动条”工作正常。在我的程序中,文本窗口中的行将自动不断添加。因此,当插入一行新文本且数据超出限制时,我希望文本和滚动条自动滚动到底部,以便始终显示最新的文本行。如何做到这一点 还有如何链接文本窗口和滚动条的滚动,因为当我在文本窗口上滚动时,滚动不会发生。我观察到的唯一方法是拖动滚动条python文本框中文本和滚动条的自动滚动,python,tkinter,Python,Tkinter,我有一个tkinter“文本”和“滚动条”工作正常。在我的程序中,文本窗口中的行将自动不断添加。因此,当插入一行新文本且数据超出限制时,我希望文本和滚动条自动滚动到底部,以便始终显示最新的文本行。如何做到这一点 还有如何链接文本窗口和滚动条的滚动,因为当我在文本窗口上滚动时,滚动不会发生。我观察到的唯一方法是拖动滚动条 scrollbar = Tkinter.Scrollbar(group4.interior()) scrollbar.pack(side = 'right',fi
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()将连续发送数据,数据将滚动
提前感谢,您可以使用带有索引的
查看使文本小部件滚动到任何位置
例如,要使小部件的最后一行可见,可以使用索引“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()
查看文本。请参阅(…)
方法
TextWidget.insert(tk.END, str(new_txt))
TextWidget.see(tk.END)
我使用此模式将(akainsert
)文本new_txt
添加到我的输出窗口,并将(see
)滚动到底部(tk.END
)你好,Bryan Oakley,我能知道为什么我们必须使用time.ctime()函数吗,而且每隔一秒钟,滚动更新发生了???@DsArjun:您不必调用time.ctime()
。这只是说明数据随时间变化的一种方式。您可以插入任何需要的信息。这只需每秒调用add\u timestamp
。您可以调用任何想要的函数或方法。autoscroll正在我的代码中工作。谢谢。但我看到的另一个问题是,若你们把光标放在文本窗口的顶部,用指针滚轮向上滚动,它就不会向上滚动。唯一的办法就是拖上来。指针轮旋转时是否有滚动功能?我还观察到,如果该状态被禁用,则scroll将与指针轮一起工作旋转链接已断开,effbot已脱机很长时间了。@wineunuchs2unix:谢谢您让我知道。我已经删除了链接。
TextWidget.insert(tk.END, str(new_txt))
TextWidget.see(tk.END)