【问题标题】:How to set maximum width in characters for the Text widget?如何为文本小部件设置字符的最大宽度?
【发布时间】:2011-09-04 16:29:57
【问题描述】:

我注意到 Tkinter Text 小部件的宽度参数以字符为单位。

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

【问题讨论】:

  • 您的问题不清楚。您是否要阻止用户调整包含文本小部件的窗口的大小?或者您是否希望将小部件内的文本限制为特定大小?
  • 我希望将小部件内的文本限制为特定大小。说 80 个字符宽。

标签: python text fonts width tkinter


【解决方案1】:

您可以通过绑定到KeyKeyPressKeyRelease 事件来做到这一点。但是我见过的每一个实现都是不稳定的。如果您可以使用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 个字符处换行,但这通常比付出的努力多。

    【讨论】:

      【解决方案3】:

      这个问题对我来说有点不清楚。

      如果要设置文本框的宽度。然后,您可以在实例化 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)
      

      如果您想限制文本小部件的输入。为此,我在另一个线程上写了一个解决方案。

      在这里阅读我的回复

      how do you restrict the length of a tkinter text widget in python by blocking the latest character entered?

      如 cmets 中所述,还有其他小部件也可以处理该任务。条目小部件就是其中之一。

      如果这有用,请投票。如果您对我如何更清楚地沟通有意见,我将不胜感激。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-12
        • 2017-07-18
        • 1970-01-01
        • 1970-01-01
        • 2012-11-11
        • 2021-02-25
        • 1970-01-01
        相关资源
        最近更新 更多