又来了!我正在尝试为我的TextInput小部件添加一个字符计数器,但我不知道要为这四个参数传递什么参数,或者更多关于它们应该如何运行的参数。我检查了文档,但它让我更进了树林。无论如何,这里是相关的片段。
def charsLeft(window, keycode, text, modifiers):
# Do some magic, pass some parameters, and then...
ansLen.text = str(len(hidden.text) - len(answer.text))
这是我布局的代码:
ansLen = Label(bold=True, halign="center", size_hint=(.2, .5), text_size=self.size, valign="middle")
answer = TextInput(id="sbt", multiline=False, size_hint=(.8, .5), text="")
answer.bind(keyboard_on_key_down=charsLeft)
我认为,因为几乎每个网站都有,所以它应该相当简单。我只是不知道我不知道在这里。
答案 0 :(得分:0)
如果你想设置一个文本计数器,你不需要使用keyboard_on_key_down
,你只需要为我们使用bind
捕获文本更改,然后我们可以使用lambda函数来更新自绑定返回实例和属性更改后的值,设置我们使用的值setattr
:
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.boxlayout import BoxLayout
class MyApp(App):
def build(self):
layout = BoxLayout(orientation='vertical')
answer = TextInput(multiline=False, text="", size_hint=(1, 0.5))
ansLen = Label(bold=True, halign="center", text="", size_hint=(1, 0.5))
answer.bind(text=lambda instance, text: setattr(ansLen, "text", str(len(text))))
layout.add_widget(answer)
layout.add_widget(ansLen)
return layout
if __name__ == '__main__':
MyApp().run()