我在 KivyMD 文档中遇到了 max_text_length ,但它并没有阻止输入超过我指定的长度。相反,当我输入超过指定数量的 3 个字符时,字体颜色会变为红色,但仍然允许我输入超过 3 个字符。
下面 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}
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()
最后,只需确保您的函数将在根目录下调用。或自我。或应用程序。根据案例。