2011-05-30 52 views
2

我注意到Tkinter Text小部件的宽度参数是以字符为单位的。如何为文本小部件设置字符的最大宽度?

是否可以为文本小部件设置最大字符宽度?

+0

你的问题不清楚。您是否想要阻止用户调整包含文本小部件的窗口大小?或者,您是否希望小部件内部的文本被限制为特定大小? – 2011-05-30 12:32:01

+0

我想将小部件内部的文本限制为特定大小。说80个字符宽。 – rectangletangle 2011-05-30 21:07:30

回答

1

您可以通过绑定到Key,KeyPressKeyRelease事件来完成此操作。但是我看到的每一个实现都是片状的。如果您可以通过使用Entry小部件而不是Text小部件来解决问题,请查看Validating Entry Widget

看起来很简单的使用(我不包括ValidatingEntryMaxLengthEntry类简洁):

from Tkinter import * 

root = Tk() 
entry = MaxLengthEntry(root, maxlength=10) 
entry.pack(side=LEFT) 
root.mainloop() 
2

你想要做什么不是由部件直接支持。你几乎可以通过使用一些技巧到达那里。例如,您可以将wrap属性设置为在单词或字符边界处换行,然后确保该小部件始终不超过80个字符(这需要适当地使用pack/grid/place选项)。

这种技术对于固定宽度的字体可以很好地工作,但对于可变宽度的字体,它不会总是包装在80个字符处。这是因为当你将宽度设置为80个字符时,它实际上是基于平均字符宽度的80倍(特别是,上次检查时的0(零)字符)将其设置为特定像素宽度。

当然,通过监控文本的插入和删除以及自己处理包装,你总是可以强制它包装成80个字符,但这通常比值得付出更多的努力。

相关问题