我正在尝试使用Kivy和Python创建一个简单的Chatbot应用程序UI,但我陷入了第一阶段。 如何访问BoxLayout中的TextInput小部件以获取其内容?
我读到只要在TextInput上按“Enter”,就会调用函数 on_text_validate()。但是,下面的代码似乎没有起作用。
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.screenmanager import Screen, ScreenManager, FadeTransition
from kivy.uix.scrollview import ScrollView
from kivy.properties import StringProperty
from kivy.lang import Builder
Builder.load_string('''
#:import AnchorLayout kivy.uix.anchorlayout
#:import Layout kivy.uix.layout
<ChatBotScreen>:
BoxLayout:
orientation: 'vertical'
ScrollView:
Label:
size_hint_y: None
height: self.texture_size[1]
text_size: self.width, None
botOutput: root.botOutput
ScrollView:
Label:
size_hint_y: None
height: self.texture_size[1]
text_size: self.width, None
userInput: root.userInput
TextInput:
id: ti_userinput
multiline: False
''')
class ChatBotScreen(Screen):
userInput = StringProperty()
botOutput = StringProperty()
def on_text_validate(self):
text_input_userInput = self.ids['ti_userinput'].text
self.ids['ti_userinput'].text = ''
print(text_input_userInput)
def UserInput(self):
pass
def BotOutput(self):
pass
sm = ScreenManager(transition=FadeTransition())
sm.add_widget(ChatBotScreen(name='mainchat'))
class MyApp(App):
def build(self):
return sm
请指导我。
答案 0 :(得分:1)
您的问题是,TaskScheduler
不是on_text_validate
类的方法,而是Screen
的方法,因此您永远不会调用TextInput
on_text_validate
1}}类,您可以做的是从ChatBotScreen
的{{1}}事件中调用该方法:
on_text_validate