只需学习tkinter并发现一些奇怪的行为即可。我的垂直滚动条是浅灰色的,并且包含一个深灰色的矩形,该矩形在该栏中上下移动以显示进度。此代码首次执行时,没有深灰色的进度矩形。当我按下进度条的向下箭头时,会出现一个深灰色框,但会一直停留在滚动条的顶部,直到我一直滚动到文本的底部。只有这样,滚动条才似乎可以确定框中的文本量,深灰色进度矩形会跳到滚动条的底部并从那里开始正确工作。我在Windows计算机上,并使用python 3在Jupyter Notebook中执行此操作。
是否可以通过某种方式初始化滚动条,使其知道要处理多少文本?
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()
答案 0 :(得分:1)
男孩,这很难。原来,当您的文字仅由很长的一行组成时,滚动条会产生怪异的反应。尝试插入带有换行符的文本:
t.insert(INSERT, "Begin " + "This is a test \n" * 800 + " END")
,它将像魅力一样工作。
这似乎是grid()
的一个问题,因为如果您改用pack()
,也可以用一个长行,那么效果很好...我不确定为什么。