我注意到Tkinter Text小部件的width参数是字符。
是否可以为文本小部件设置字符的最大宽度?
答案 0 :(得分:2)
小部件不直接支持您想要做的事情。你可以通过一些技巧几乎到达那里。例如,您可以将wrap
属性设置为在单词或字符边界处换行,然后确保窗口小部件永远不会超过80个字符(这需要适当地使用pack / grid / place选项)。
此技术适用于固定宽度字体,但对于可变宽度字体,它不会始终换行为80个字符。这是因为当你将宽度设置为80个字符时,它实际上是根据平均字符宽度的80倍(特别是上次检查时的0(零)字符)将其设置为特定的像素宽度。
当然,您可以通过监视文本插入和删除以及自己处理包装来强制它以80个字符包装,但这通常比值得付出更多的工作。
答案 1 :(得分:1)
您可以通过绑定Key
,KeyPress
或KeyRelease
事件来执行此操作。但是我所看到的每一个实现都是不稳定的。如果您可以使用Entry
窗口小部件而不是Text
窗口小部件,请查看Validating Entry Widget。
看起来非常简单易用(为简洁起见,我不包括ValidatingEntry
和MaxLengthEntry
类:
from Tkinter import *
root = Tk()
entry = MaxLengthEntry(root, maxlength=10)
entry.pack(side=LEFT)
root.mainloop()
答案 2 :(得分:0)
这个问题对我来说有点不清楚。
如果要设置文本框的宽度。然后,您可以在实例 Text 类时设置宽度。默认情况下,宽度以字符为单位。实际像素宽度由文本小部件默认字体决定。请注意,超出框边界的字符将导致文本在每个字符宽度达到后立即“翻页”。
chars = 5 # 5 characters wide
Text(parent, width = chars, font = ('Helvetica, 24'))
# change the font family and size to get different sized text boxes
您还可以在创建后重新定义 Text Widgets 的宽度:
textWidget.configure(width = 5)
如果您想限制文本小部件的输入。我为此在另一个线程上写了一个解决方案。
在这里阅读我的回复
正如评论中所述,还有其他小部件也可以处理该任务。入口小部件就是其中之一。
如果这对您有用,请投票。如果您对我如何更清晰地沟通有任何意见,我将不胜感激。