让我们想象一下我们有一个表单,这个人在输入上写了一些东西但需要清除它们,我将如何在 Kivy 中做到这一点?我试过这个,但没有用:主要.py:class CreateUra(GridLayout): def clear_inputs(self, *args): for item in args: item = ''class UraApp(App): def build(self): return CreateUra()if __name__ == "__main__": UraApp().run()乌拉.kv:<CreateUra>: cols: 1 padding: 10 spacing: 10 row_force_default: True row_default_height: '32dp' BoxLayout: Label: text: 'Contexto:' TextInput: hint_text: "Contexto da ura" focus: True multiline: False cursor_color: (0, 0, 0, 0.8) id: context_input BoxLayout: Label: text: 'Nome da ura:' TextInput: hint_text: "Nome do arquivo da ura" multiline: False cursor_color: (0, 0, 0, 0.8) id: ura_file_name Button: text: 'Create Ura' id: bt_create on_press: root.uraConfig() on_release: root.clear_inputs(context_input.text, ura_file_name.text)*忽略 on_press 上的 uraConfig我试过这种方式,它奏效了:Button: text: 'Create Ura' id: bt_create on_press: root.uraConfig() on_release: context_input.text = ''我对 kivy 和 Python 很陌生,所以我不确定这是否是清除文本的最佳方式,但我做错了什么?或者,如果你们能以最好的方式来做这件事。
1 回答
喵喵时光机
TA贡献1846条经验 获得超7个赞
您的情况的问题是传递文本,但不是文本属性,而是文本的副本,因此即使将其设置为空也不会反映在文本输入中。您必须将 textinput 作为列表传递,迭代并使用空字符串设置属性:
*.kv
Button:
text: 'Create Ura'
id: bt_create
on_press: root.uraConfig()
on_release: root.clear_inputs([context_input, ura_file_name]) # <-- add brackets
*.py
class CreateUra(GridLayout):
def clear_inputs(self, text_inputs):
for text_input in text_inputs:
text_input.text = ""
添加回答
举报
0/150
提交
取消