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()
它工作正常,还有一条长线...我不确定为什么。
刚刚学习 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()
它工作正常,还有一条长线...我不确定为什么。