为文本输入设置宽度属性

1 投票
1 回答
3668 浏览
提问于 2025-04-18 17:13

我按照展示应用的方式创建了一个小部件。不过,我在api的文档中没有找到任何可以限制输入框宽度的内容。我该怎么设置宽度呢?

CTextInput:
    size_hint_y: None
    height: '32dp'
    multiline: False
    hint_text: 'SNMP Community String(s)'

1 个回答

8

这里提到的 width 我猜是指文本的长度,因为设置一个小部件的 width 和设置它的 height 一样简单。

你提供的文档里有一个关于文本过滤的示例,这个示例可以很容易地修改来限制文本的长度:

class MyTextInput(TextInput):
    def insert_text(self, substring, from_undo=False):
        # limit to 5 chars
        substring = substring[:5 - len(self.text)]
        return super(MyTextInput, self).insert_text(substring, from_undo=from_undo)


如果你正在使用 Kivy 的开发版本(1.8.1-dev,来自 git),那就更简单了,可以直接通过 kv 来实现。你可以使用一个可调用的 input_filter 来限制文本的长度。这里有一个简单的示例:

TextInput:
    # limit to 5 chars
    input_filter: lambda text, from_undo: text[:5 - len(self.text)]

撰写回答