如何在按Enter键后立即将Kivy输入文本分配给变量?

时间:2020-04-02 11:41:35

标签: python python-3.x error-handling kivy

我正在尝试为个人助理创建用户界面。
我希望用户输入文本,当他按Enter时,我想做点什么(“说打印文本”)并自动清除输入字段。 这是我的代码:

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.lang import Builder
from kivy.core.window import Window
from kivy.uix.floatlayout import FloatLayout
from kivy.properties import ObjectProperty
from kivy.uix.textinput import TextInput
from kivy.uix.boxlayout import BoxLayout
class TetraApp(App):

    def build(self):
        Window.size=(875,600)
        Window.clearcolor = (0, 1, 1, 1)
        b = BoxLayout(orientation ='vertical')
        self.t = TextInput(hint_text='Say Something...', size_hint=(1,0.1), multiline=False)
#the multiline disables on enter. i want it to do a process on enter.
        b.add_widget(self.t)
        # code here to go to enterClicked() when enter is pressed and to clear input field
        Window.borderless=True
        return b
    def enterClicked(self):
        if 'hello' in self.t.text:
            print("hello user")
if __name__=='__main__':
    app=TetraApp()
    app.run()

我找不到与此有关的任何教程。

1 个答案:

答案 0 :(得分:3)

您可以尝试将操作绑定到TextInput上,如下所示:

self.t = TextInput(hint_text='Say Something...', size_hint=(1,0.1),multiline=False)
self.t.bind(on_text_validate=self.enterClicked)
b.add_widget(self.t)
def enterClicked(self,t):
    if 'hello' in self.t.text:
        print("hello user")
    self.t.text=''

当用户点击“ enter”时,仅在multiline = False模式下触发on_text_validate操作。

要清除输入字段,请尝试创建一种清除文本的方法(类似于enterClicked),并使用on_text_validate将此方法也绑定到TextInput。让我知道它是否有效。

相关问题