我正在尝试构建一个聊天机器人。我已经构建了UI,它具有一个输入文本字段和一个绑定到文本字段的按钮,当按下该按钮时,它将根据用户给出的输入生成响应。我将该响应存储在一个名为reply的全局变量中,并且希望在屏幕上显示该响应。 我使用下面的代码片段来做到这一点,但是它不起作用。 (我假设它显示的是变量reply的初始值,它是一个空字符串。)
text = MDLabel(text=reply,pos_hint={'center_x': 0.9, 'center_y': 0.05})
screen.add_widget(text)
如何使屏幕小部件不断更新自身,以便它显示变量响应的当前值。 这是我的代码:
from kivymd.app import MDApp
from kivymd.uix.screen import Screen
from kivymd.uix.button import MDIconButton
from kivymd.uix.label import MDLabel
from kivy.lang import Builder
import helpers
from cbot import text
global reply
reply=""
class Bot(MDApp):
def show_data(self,obj):
question=self.username.text
reply=text.chat.converse(question)
print(reply)
def build(self):
self.theme_cls.primary_palette = "Green"
screen = Screen()
self.input = Builder.load_string(helpers.textfield)
button = MDIconButton(icon="chevron-double-right",pos_hint={'center_x': 0.9, 'center_y': 0.05},on_release=self.show_data)
text = MDLabel(text=reply,pos_hint={'center_x': 0.9, 'center_y': 0.05})
screen.add_widget(self.input)
screen.add_widget(button)
screen.add_widget(text)
return screen
print(reply)
Bot().run()
答案 0 :(得分:0)
如果您这样保存对MDLabel
的引用:
self.text = MDLabel(text=reply,pos_hint={'center_x': 0.9, 'center_y': 0.05})
然后,在您的show_data()
方法中,您可以执行以下操作:
self.text.text = reply