Python Tkinter ttk 文本小部件上的滚动条不缩放

Python Tkinter ttk Scrollbar on Text widget not scaling

刚刚学习 tkinter 并发现了一些奇怪的行为。我的垂直滚动条是浅灰色的,包含上下滚动条以显示进度的深灰色矩形,当此代码首次执行时,没有深灰色进度矩形。当我按下进度条的向下箭头时,深灰色框出现但停留在滚动条的顶部,直到我一直滚动到文本底部。只有这样,滚动条似乎才能确定框中的文本数量,深灰色进度矩形会跳到滚动条的底部,并从那里开始正常工作。我在 Windows 机器上并使用 python 在 Jupyter Notebook 中执行此操作 3.

有没有什么方法可以初始化滚动条,让它知道它正在处理多少文本?

 from tkinter import *
 from tkinter import ttk

 root = Tk()
 root.title('Twitter Timeline')

 f = ttk.Frame(root, padding = '3 3 12 12')
 f.grid(column=0, row=0, sticky=(N,W,E,S))
 root.columnconfigure(0, weight=1)
 root.rowconfigure(0, weight=1)

 t = Text(f, width= 100,  wrap='word')
 t.grid(column = 0, row = 2, sticky="nsew")
 t.insert(INSERT, "Begin " + "This is a test " * 800 + " END")

 s = ttk.Scrollbar(root, orient=VERTICAL, command=t.yview)
 s.grid(column=1, row=0, sticky='nsew')
 t['yscrollcommand'] = s.set

 for child in f.winfo_children(): 
     child.grid_configure(padx=5, pady=5)

 root.mainloop()

天哪,这很难。事实证明,当您的文本仅包含很长的一行时,滚动条的反应很奇怪。尝试插入带有换行符的文本:

t.insert(INSERT, "Begin " + "This is a test \n" * 800 + " END")

它会很有魅力。

这似乎是 grid() 的一个问题,因为如果您改用 pack() 它工作正常,还有一条长线...我不确定为什么。