首页 > 解决方案 > 我想限制 python/kivy 中的文本输入

问题描述

所以我做了游戏pythonkivy你必须在哪里输入团队名称。当您输入团队名称时,它会通过“提交”按钮转移到下一个班级。如果用户键入超过 9 个字符的按钮,则必须禁用。问题是如果你输入长名字,下一节课的事情就很难看。kivy所以我想在文件中给 textinput 一个限制。这是我的kivy代码:

TextInput:
        id: teamI_name
        font_name: 'bpg_nino_mtavruli_bold'
        text: "Type Name"
        size_hint: .5, .05
        multiline: False
        font_size: 80
        pos_hint: {'x': .45, 'y': .57}
        background_color: 0, 0, 0, 0
        foreground_color: 0, 0, 255, 1

Button:
        text: "start"
        background_color: 0, 0, 0, 0
        size_hint: .43, .1
        pos_hint: {'x': .4, 'y': .1}
        on_press: root.submit_on()
        on_release: root.submit_off()
        disabled: True if team1_name.text == '' or team2_name.text == '' else False

标签: pythonkivy

解决方案


再会。您可以在您的App类中创建一个公共变量,以便您的 kv 文件中的小部件可以引用。我建议您使用属性(尤其是字符串属性)。

所以在你的App课堂上,你可以添加team_name_str = StringProperty().

teamI_name在您的 kv 脚本中,您使用文本分配:text:app.team_name_str

您的开始按钮的逻辑将是disabled: bool(team1_name.text) or bool(team2_name.text) or len(team2_name.text)>9


推荐阅读