2013-05-16 25 views
6

我能得到的Scrollbar与一个Text部件的工作,但由于某种原因它不拉伸以适应文本框。滚动条不拉伸以适应文本小

有谁知道的任何方式改变滚动条控件或东西的效果的高度?

txt = Text(frame, height=15, width=55) 
scr = Scrollbar(frame) 
scr.config(command=txt.yview) 
txt.config(yscrollcommand=scr.set) 
txt.pack(side=LEFT) 

回答

8

在你的问题你使用packpack可以选择让它在x和y轴中的一个或两个中增长或缩小。垂直滚动条通常应该在y轴上增长/缩小,而在x轴上则应该是水平滚动条。文本小部件通常应该填充两个方向。

对于一帧做一个文本组件和滚动条你通常会做这样的事情:

scr.pack(side="right", fill="y", expand=False) 
text.pack(side="left", fill="both", expand=True) 

上面说以下几点:

  • 滚动条是在右边(side="right"
  • 滚动条应伸展以填充y轴上的任何额外空间(fill="y"
  • 文本小部件在t他离开(side="left"
  • 文本组件应伸展,以填补在x和y轴的任何额外的空间(fill="both"
  • 文本组件将扩大占用包含frame所有剩余空间(expand=True

欲了解更多信息,请参阅http://effbot.org/tkinterbook/pack.htm

4

下面是一个例子:

from Tkinter import * 
root = Tk() 
text = Text(root) 
text.grid() 
scrl = Scrollbar(root, command=text.yview) 
text.config(yscrollcommand=scrl.set) 
scrl.grid(row=0, column=1, sticky='ns') 
root.mainloop() 

这使得一个文本框和sticky='ns',使滚动条走一路向上和向下的窗口

+0

您的示例忽略为行或列设置权重,因此可能无法正确调整大小。 –

4

简单的解决方法使用一个文本框带有集成滚动条:

的Python 3

#Python 3 
import tkinter 
import tkinter.scrolledtext 

tk = tkinter.Tk() 
text = tkinter.scrolledtext.ScrolledText(tk) 
text.pack() 
tk.mainloop() 

要读取文本框:

string = text.get("1.0","end") # reads from the beginning to the end 

当然,如果你愿意,你可以缩短进口。

Python 2 you import ScrolledText改为。

+0

在Python 2是这样的: '从ScrolledText进口ScrolledText' '...'' 文本= ScrolledTex(TK)' 。 –