首页 > 解决方案 > ValueError: MDLabel._text 只接受 str

问题描述

#当我尝试在 md 标签中添加机器人响应时,它显示错误“ValueError:MDLabel._text 只接受 str 而不是 statment”我不知道如何解决这个问题,如果可以,请提供帮助问题是在最后一个 DEF 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, 1
                                    Rectangle:
                                        pos: self.pos
                                        size: self.size
                                        source: "data/bgm.jpg"
    
                                FloatLayout:
                                    canvas:
                                        Color:
                                            rgb: 1, 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, 158, 0, 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,'center_y':0.6}
            size_hint: (0.7,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('&', '&amp;')
                .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,
                                   size_hint=(0.7, 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 而不是 statment”我不知道如何解决这个问题,如果可以请帮忙

标签: kivymdchatterbot

解决方案


尝试这个

response = bot.get_response(msg)
self.strng.get_screen('chat_bot').ids.chat_bot_1.text = 'Bot: ' +  str(response)

推荐阅读