最大文本长度 KivyMD

问题描述 投票:0回答:1

我在 KivyMD 文档中遇到了 max_text_length ,但它并没有阻止输入超过我指定的长度。相反,当我输入超过指定数量的 3 个字符时,字体颜色会变为红色,但仍然允许我输入超过 3 个字符。

enter image description here

enter image description here

下面 KivyMD 代码中的

input_filter: 'int' 行不允许输入除整数之外的任何内容。这就是我希望 max_text_length 不允许输入超过 3 位数字的情况。 KivyMD 中是否有某些内容不允许在输入字段中输入超过 3 个字符(在我的例子中为整数)?为了增加一层复杂性,我实际上需要能够输入 3 位数字。换句话说,最少 3 位数字,最多 3 位数字。任何帮助将不胜感激!

MDTextField: mode: "round" id: place input_filter: 'int' max_text_length: 3 hint_text: "3 Digit Number" valign: 'center' icon_right: "apps" size_hint_x: None width: 250 font_size: 18 pos_hint: {"center_x": 0.5}
    
python-3.x kivy kivymd
1个回答
0
投票
我不确定是否有办法将文本字段输入设置为完全相同的 3 个字符,在您的情况下,我要做的是使用 on_text 和 on_text_validate 事件并创建一个函数,将文本始终修剪为前三个当尝试输入 2 位数字时,字符和另一个函数会向用户发出警告,类似这样的操作即可完成工作:

MDTextField: id: my3digitstextfield mode: "outlined" multiline: False on_text: root.trim_textfield_input(self.text) on_text_validate: root.validate_3_digits_textfield(self.text) width: dp(250)
然后你创建你的函数,我认为名称是不言自明的:

def trim_textfield_input(self, text2trim): if len(text2trim) > 3: self.ids.my3digitstextfield.text = text2trim[:3] def validate_3_digits_textfield(self, text2validate): if len(text2validate) < 3: self.show_ok_dialog(f"[b]'{text2validate}'[/b] it's too short", "3 digits minimun required.") def show_ok_dialog(self, dialogTitle, dialogText): self.optionokdialog = MDDialog( MDDialogHeadlineText( text=f"{dialogTitle}", halign="left", ), MDDialogSupportingText( text=f"{dialogText}", halign="left", ), MDDialogButtonContainer( MDWidget(), MDButton( MDButtonIcon(icon="check-bold"), MDButtonText(text="OK"), style="outlined", on_release=lambda _: self.optionokdialog.dismiss() ), spacing="8dp", ), auto_dismiss=False ) self.optionokdialog.open()
最后,只需确保您的函数将在根目录下调用。或自我。或应用程序。根据案例。

© www.soinside.com 2019 - 2024. All rights reserved.