如何解决ValueError:MDLabel._text仅接受str
##当我尝试将bot响应添加到md标签中时,显示的错误为'ValueError:MDLabel._text仅接受str不声明'我不知道该如何解决,如果可以的话,请帮忙BOTWORK#
from kivy.lang import Builder
from kivymd.app import MDApp
from kivy.uix.screenmanager import Screen,ScreenManager
from kivymd.uix.dialog import MDDialog
from kivymd.uix.button import MDFlatButton
from kivy.storage.jsonstore import JsonStore
from kivymd.uix.picker import MDDatePicker
from kivy.core.window import Window
from chatterbot.trainers import ListTrainer
from chatterbot import ChatBot
from kivy.properties import StringProperty
Window.size = (305,500)
helpstr = '''
ScreenManager:
HomeScreen:
WelcomeScreen:
UsernameScreen:
DOB:
MainScreen:
LoginScreen:
ForgotScreen:
Forgot2Screen:
EmailScreen:
HelpScreen:
Chat_Bot:
<HomeScreen>:
name :'homescreen'
Screen:
NavigationLayout:
ScreenManager:
id: screen_manager
Screen:
name: "scr 1"
MDBottomNavigation:
MDBottomNavigationItem:
text: 'Home'
name: 'screen1'
icon: 'home-circle'
BoxLayout:
orientation: 'vertical'
MDToolbar:
title: 'streamer'
left_action_items: [['menu',lambda x: nav_drawer.toggle_nav_drawer()]]
right_action_items: [['magnify',lambda x: app.speed_dial()]]
elevation: 10
Widget:
MDBottomNavigationItem:
text:'notification'
name: 'screen--'
icon: 'bell'
MDBottomNavigationItem:
text:'library'
name: 'screen9'
icon: 'play-speed'
MDList:
OneLineIconListItem:
text: 'downloads'
on_press:
root.manager.current = 'homescreen'
IconLeftWidget:
icon: 'download'
MDBottomNavigationItem:
text: 'account'
name: 'screen2'
icon: 'account-circle'
BoxLayout:
orientation: 'vertical'
canvas.before:
Color:
rgba: 1,1,1
Rectangle:
pos: self.pos
size: self.size
source: "data/bgm.jpg"
FloatLayout:
canvas:
Color:
rgb: 1,1
Ellipse:
id: user_picture
pos: root.width/2 - 150/2,self.height/2 - 500/2 + 150*1.5
size: 150,150
source: 'data/Man.jpg'
angle_start: 0
angle_end: 360
Line:
width: 2
ellipse: (root.width/2 - 158/2,self.height/2 - 500/2 + 150*1.5,158,360)
MDRaisedButton:
text: 'Details'
pos_hint: {'center_x':0.5,'center_y':0.32}
on_press:
app.data_show()
MDLabel:
id:data_name
text:'datascreen'
font_style : 'Button'
halign : 'center'
pos_hint : {'center_y':0.1}
background_normal: 'data/input_line.png'
MDNavigationDrawer:
id: nav_drawer
BoxLayout:
orientation: 'vertical'
Image:
source: ('instagram.jpg')
ScrollView:
MDList:
OneLineIconListItem:
text: 'Home'
on_press:
root.manager.current = 'homescreen'
IconLeftWidget:
icon: 'home'
OneLineIconListItem:
text: 'settings'
on_release:
screen_manager.current = "scr 2"
IconLeftWidget:
icon: 'settings'
OneLineIconListItem:
text: 'login'
on_release:
root.manager.current = 'loginscreen'
IconLeftWidget:
icon: 'login'
OneLineIconListItem:
text: 'Help'
on_release:
root.manager.current = 'helpscreen'
IconLeftWidget:
icon: 'help-circle'
<WelcomeScreen>:
name : 'welcomescreen'
MDLabel:
text:'Welcome to streamer'
font_style: 'Button'
halign: 'center'
pos_hint: {'center_y':0.75}
MDLabel:
text:'Create an account in a few easy steps and enjoy your favourites'
font_style: 'Subtitle1'
halign: 'center'
theme_text_color: "Secondary"
pos_hint: {'center_y':0.55}
MDRaisedButton:
text: 'Next'
pos_hint: {'center_x':0.5,'center_y':0.32}
on_press:
root.manager.current = 'emailscreen'
root.manager.transition.direction = 'left'
MDProgressBar:
value:30
pos_hint:{'center_y' : 0.02}
<EmailScreen>
name:'emailscreen'
MDLabel:
text:'Email Address?'
font_style: 'Button'
halign: 'center'
pos_hint : {'center_y':0.85}
MDTextField:
id:Email_text_fied
pos_hint: {'center_x':0.5,'center_y':0.6}
size_hint: (0.7,0.1)
hint_text : 'Email'
helper_text: 'Required'
helper_text_mode: 'on_error'
icon_right: 'email'
icon_right_color: app.theme_cls.primary_color
required : True
MDIconButton:
id:disabled_button
icon: 'arrow-right'
pos_hint: {'center_x':0.9,'center_y':0.1}
on_press:
root.manager.current = 'usernamescreen'
<UsernameScreen>
name:'usernamescreen'
MDIconButton:
icon: 'arrow-left'
pos_hint: {'center_x':0.1,'center_y':0.1}
on_press:
root.manager.current = 'welcomescreen'
root.manager.transition.direction = 'right'
MDIconButton:
id:disabled_button
disabled: True
icon: 'arrow-right'
pos_hint: {'center_x':0.9,'center_y':0.1}
on_press:
root.manager.current = 'dob'
root.manager.transition.direction = 'left'
MDProgressBar:
value:60
pos_hint: {'center_y':0.02}
MDLabel:
text:'whats your name?'
font_style: 'Button'
halign: 'center'
pos_hint : {'center_y':0.85}
MDTextField:
id:username_text_fied
pos_hint: {'center_x':0.5,0.1)
hint_text : 'username'
helper_text: 'Required'
helper_text_mode: 'on_error'
icon_right: 'account'
icon_right_color: app.theme_cls.primary_color
required : True
MDIconButton:
icon:'account-plus'
pos_hint: {'center_x':0.5,'center_y':0.35}
on_press: app.check_username()
<DOB>:
name:'dob'
MDLabel:
text:'whats your birthday'
font_style: 'Button'
halign: 'center'
pos_hint: {'center_y':0.75}
MDRaisedButton:
id:date_picker
text:'Date Picker'
user_font_size : '70sp'
pos_hint : {'center_x':0.5,'center_y':0.6}
on_press:
app.show_date_picker()
MDIconButton:
icon:'arrow-left'
pos_hint: {'center_x':0.1,'center_y':0.1}
on_press: root.manager.current = 'usernamescreen'
MDIconButton:
id: second_disabled
disabled: True
icon:'arrow-right'
pos_hint: {'center_x':0.9,'center_y':0.1}
on_press: root.manager.current = 'mainscreen'
<MainScreen>:
name : 'mainscreen'
MDLabel:
id:profile_name
text:'main screen'
font_style : 'Button'
halign : 'center'
pos_hint : {'center_y':0.7}
MDRaisedButton:
text: "Home"
pos_hint: {"center_x": 0.5,"center_y":0.06}
size_hint: .70,0.03
on_press:
root.manager.current = 'homescreen'
<LoginScreen>:
name : 'loginscreen'
MDIconButton:
icon: "arrow-left"
on_press:
root.manager.current = 'homescreen'
MDLabel:
text: 'streamer'
halign: "center"
pos_hint: {"center_y": .8}
font_style: "H6"
size_hint: (1,1)
MDTextField:
id : data_ok_10
hint_text: "Enter username"
helper_text: "or click on forgot password"
helper_text_mode: "on_focus"
icon_right:"account"
icon_right_color: app.theme_cls.primary_color
pos_hint:{'center_x': 0.5,'center_y': 0.64}
size_hint_x:None
width:300
MDTextField:
hint_text: "Enter password"
icon_right: "eye-off"
icon_right_color: app.theme_cls.primary_color
pos_hint:{'center_x': 0.5,'center_y': 0.54}
size_hint_x:None
password: True
width:300
MDRaisedButton:
text: "Login"
pos_hint: {"center_x": 0.5,"center_y":0.48}
size_hint: .7,0.04
on_press:
app.show_data()
MDTextButton:
text: "Forgot password?"
pos_hint: {"center_x":0.5,"center_y":0.04}
on_release:
root.manager.current = 'forgotscreen'
MDTextButton:
text: f"[color=#000000]Don't have an account?[/color] Sign up"
on_press:
root.manager.current = 'welcomescreen'
markup: True
pos_hint: {"center_x":0.5,"center_y":0.33}
<ForgotScreen>:
name :'forgotscreen'
BoxLayout:
orientation: 'vertical'
MDToolbar:
title: 'forgot?'
elevation: 10
Widget:
MDIconButton:
icon: "arrow-left"
on_press:
root.manager.current = 'loginscreen'
MDTextField:
hint_text: "Enter username or email"
helper_text: "or click on forgot username"
helper_text_mode: "on_focus"
icon_right: "bell"
icon_right_color: app.theme_cls.primary_color
pos_hint:{'center_x': 0.5,'center_y': 0.6}
size_hint_x:None
width:300
MDRaisedButton:
text: "Forgot Password"
on_press:
root.manager.current = 'forgot2screen'
pos_hint: {"center_x": 0.5,"center_y":0.5}
size_hint: .8,0.04
MDTextButton:
text: f"[color=#000000]Don't have an account?[/color] Sign up"
on_press:
root.manager.current = 'welcomescreen'
markup: True
pos_hint: {"center_x":0.5,"center_y":0.23}
MDTextButton:
text: f"[b][color=#000000]Back To[/color] Login[/b]"
on_press:
root.manager.current = 'loginscreen'
markup: True
pos_hint: {"center_x":0.5,"center_y":0.13}
MDLabel:
text: f"[font=Icons] {md_icons['copyright']}[/font]"
markup: True
halign: "center"
pos_hint: {"center_y":0.05}
<Forgot2Screen>:
name :'forgot2screen'
BoxLayout:
orientation: 'vertical'
MDToolbar:
title: 'Account verification'
elevation: 10
Widget:
MDIconButton:
icon: "arrow-left"
on_release:
root.manager.current = 'forgotscreen'
MDLabel:
text: "Account verification"
halign: "center"
pos_hint: {"center_y":.73}
font_style: "Subtitle2"
MDLabel:
text: "We've sent a verification code to your email."
halign: "center"
pos_hint: {"center_y":.67}
font_style: "Body2"
MDTextField:
hint_text: "Enter code"
helper_text: "or click resent code"
password: True
max_text_length: 6
helper_text_mode: "on_focus"
icon_right: "timer-10"
icon_right_color: app.theme_cls.primary_color
pos_hint:{'center_x': 0.5,'center_y': 0.6}
size_hint_x:None
width:300
MDTextButton:
text: "Resend code"
pos_hint: {"center_x": 0.5,"center_y":0.45}
MDRaisedButton:
text: "Submit"
pos_hint: {"center_x": 0.5,"center_y":0.52}
size_hint: .70,0.3
MDLabel:
text: "Never share your verification code to anyone."
halign: "center"
pos_hint: {"center_y":.4}
font_style: "Caption"
MDLabel:
text: f"[font=Icons] {md_icons['copyright']}[/font] "
markup: True
halign: "center"
pos_hint: {"center_y":.05}
<HelpScreen>:
name :'helpscreen'
BoxLayout:
orientation: 'vertical'
MDToolbar:
title: 'Help'
elevation: 10
Widget:
MDList:
OneLineIconListItem:
text: 'help from Bot'
on_press:
root.manager.current = 'chat_bot'
IconLeftWidget:
icon: 'robot'
OneLineIconListItem:
text: 'customer care'
on_press:
root.manager.current = 'homescreen'
IconLeftWidget:
icon: 'phone-in-talk'
<Chat_Bot>:
name :'chat_bot'
BoxLayout:
orientation: 'vertical'
MDCard:
orientation: "vertical"
padding: "8dp"
size_hint: None,None
size: "900dp","500dp"
pos_hint: {"center_x": .5,"center_y": .5}
MDLabel:
text: ""
theme_text_color: "Secondary"
size_hint_y: None
height: self.texture_size[1]
id: chat_logs
pos_hint: {'center_x': 0.86,'center_y': 0.2}
MDLabel:
text: ""
theme_text_color: "Secondary"
size_hint_y: None
height: self.texture_size[1]
id: chat_bot_1
pos_hint: {'center_x': 0.86,'center_y': 0.2}
MDSeparator:
height: "0.9dp"
MDIconButton:
id: uuuuu_o
icon: 'send'
pos_hint: {'center_x': .64,'center_y': 0.05}
on_press:
app.botwork()
MDTextFieldRound:
hint_text: "How can i help you"
icon_right_color: app.theme_cls.primary_color
pos_hint: {'center_x': 0.48,'center_y': 0.2}
size_hint_x: None
width: 200
id: jack_66
'''
class WelcomeScreen(Screen):
pass
class UsernameScreen(Screen):
pass
class DOB(Screen):
pass
class MainScreen(Screen):
pass
class HomeScreen(Screen):
pass
class LoginScreen(Screen):
pass
class ForgotScreen(Screen):
pass
class Forgot2Screen(Screen):
pass
class EmailScreen(Screen):
pass
class HelpScreen(Screen):
pass
class Chat_Bot(Screen):
pass
def esc_markup(msg):
return (msg.replace('&','&')
.replace('[','&bl;')
.replace(']','&br;'))
sm = ScreenManager()
sm.add_widget(WelcomeScreen(name='welcomescreen'))
sm.add_widget(UsernameScreen(name='usernamescreen'))
sm.add_widget(DOB(name='dob'))
sm.add_widget(MainScreen(name='main_screen'))
sm.add_widget(HomeScreen(name='homescreen'))
sm.add_widget(LoginScreen(name='loginscreen'))
sm.add_widget(ForgotScreen(name='forgotscreen'))
sm.add_widget(Forgot2Screen(name='forgot2screen'))
sm.add_widget(EmailScreen(name='emailscreen'))
sm.add_widget(HelpScreen(name='helpscreen'))
sm.add_widget(Chat_Bot(name='chat_bot'))
class NewApp(MDApp):
def build(self):
self.strng = Builder.load_string(helpstr)
return self.strng
def check_username(self):
self.username_text = self.strng.get_screen('usernamescreen').ids.username_text_fied.text
username_check_false = True
try:
int(self.username_text)
except:
username_check_false = False
if username_check_false or self.username_text.split() == []:
cancel_btn_username_dialogue = MDFlatButton(text='Retry',on_release=self.close_username_dialogue)
self.dialog = MDDialog(title='Invalid Username',text="Please input a valid username",size_hint=(0.7,0.2),buttons=[cancel_btn_username_dialogue])
self.dialog.open()
else:
self.strng.get_screen('usernamescreen').ids.disabled_button.disabled = False
def close_username_dialogue(self,obj):
self.dialog.dismiss()
def show_date_picker(self):
date_dialog = MDDatePicker(callback=self.get_date,year=1999,month=1,day=1,)
date_dialog.open()
def get_date(self,date):
self.dob = date
self.strng.get_screen('dob').ids.date_picker.text = str(self.dob)
self.strng.get_screen('dob').ids.second_disabled.disabled = False
self.gmail = self.strng.get_screen('emailscreen').ids.Email_text_fied.text
# Storing of DATA
self.store.put('UserInfo',name=self.username_text,)
self.store.put('DOBUSER',dob=str(self.dob))
self.store.put('GMAILUSER',gmail=self.gmail)
def username_changer(self):
self.strng.get_screen('mainscreen').ids.profile_name.text = f"Sign up finished"
def on_start(self):
self.store = JsonStore("userProfile.json")
try:
if self.store.get('UserInfo') != "":
self.username_changer()
self.strng.get_screen('mainscreen').manager.current = 'homescreen'
except KeyError:
self.strng.get_screen('welcomescreen').manager.current = 'welcomescreen'
def show_data(self):
self.password_ok = self.strng.get_screen('loginscreen').ids.data_ok_10.text
if self.password_ok is '':
check_string = 'please enter a vaild username and pasword'
else:
check_string = self.password_ok + ' does not exist'
close_button = MDFlatButton(text="close",on_release=self.close_dialog)
more_button = MDFlatButton(text='more')
self.dialog = MDDialog(title='username and password chek',text=check_string,1),buttons=[close_button,more_button])
self.dialog.open()
def close_dialog(self,obj):
self.dialog.dismiss()
def data_show(self):
self.strng.get_screen(
'homescreen').ids.data_name.text = f"NAME: {self.store.get('UserInfo')['name']} " \
f"DATE OF BIRTH:{self.store.get('DOBUSER')['dob']} " \
f"MAIL:{self.store.get('GMAILUSER')['gmail']} "
def botwork(self):
bot = ChatBot('Text')
conv = open('english/ai.yml','r').readlines()
bot.set_trainer(ListTrainer)
bot.train(conv)
nickname = self.strng.get_screen('mainscreen').ids.profile_name.text = f"{self.store.get('UserInfo')['name']}"
msg = self.strng.get_screen('chat_bot').ids.jack_66.text
self.strng.get_screen('chat_bot').ids.chat_logs.text = nickname + ':' + esc_markup(msg)
response = bot.get_response(msg)
#THE PROBLEM IS AT HERE
self.strng.get_screen('chat_bot').ids.chat_bot_1.text = ('Bot: ',response)
NewApp().run()
**我正在尝试进行chat_bot _ !. text = bot响应,但显示错误'ValueError:MDLabel._text仅接受str不声明'我不知道如何解决此问题,请您帮忙
解决方法
尝试
response = bot.get_response(msg)
self.strng.get_screen('chat_bot').ids.chat_bot_1.text = 'Bot: ' + str(response)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。