Python 更改绑定类中的变量会复制布局并崩溃kivy

Python 更改绑定类中的变量会复制布局并崩溃kivy,python,crash,kivy,kivy-language,kivymd,Python,Crash,Kivy,Kivy Language,Kivymd,我有一个可以工作的代码,但是当我在文本字段中写一些东西时,它会复制布局并崩溃(它应该保存变量)怎么了? 我的主要应用程序类别代码: class MyClientApp(MDApp): ipaddress = ConfigParserProperty('', 'settings', 'ipaddress', 'app', val_type=str) button1 = ConfigParserProperty('', 'buttonnames', 'button1', 'app',

我有一个可以工作的代码,但是当我在文本字段中写一些东西时,它会复制布局并崩溃(它应该保存变量)怎么了? 我的主要应用程序类别代码:

class MyClientApp(MDApp):
    ipaddress = ConfigParserProperty('', 'settings', 'ipaddress', 'app', val_type=str)
    button1 = ConfigParserProperty('', 'buttonnames', 'button1', 'app', val_type=str)
    button2 = ConfigParserProperty('', 'buttonnames', 'button2', 'app', val_type=str)
    button3 = ConfigParserProperty('', 'buttonnames', 'button3', 'app', val_type=str)
    button4 = ConfigParserProperty('', 'buttonnames', 'button4', 'app', val_type=str)
    button5 = ConfigParserProperty('', 'buttonnames', 'button5', 'app', val_type=str)
    button6 = ConfigParserProperty('', 'buttonnames', 'button6', 'app', val_type=str)
    button7 = ConfigParserProperty('', 'buttonnames', 'button7', 'app', val_type=str)
    button8 = ConfigParserProperty('', 'buttonnames', 'button8', 'app', val_type=str)
    button9 = ConfigParserProperty('', 'buttonnames', 'button9', 'app', val_type=str)

    def build_config(self, config):
        config.setdefaults(
            'settings',
            {
                'ipaddress': ''
            }
        )
        config.setdefaults(
            'buttonnames',
            {
                'button1': '',
                'button2': '',
                'button3': '',
                'button4': '',
                'button5': '',
                'button6': '',
                'button7': '',
                'button8': '',
                'button9': '',

            }
        )

    def load_config(self):
        config = super(MyClientApp, self).load_config()
        if not config.filename:
            config.filename = self.get_application_config()

    def save_config(self):
        self.config.write()

    def build(self):
        self.buttonnames = []
        self.buttonnames.append(self.button1)
        self.buttonnames.append(self.button2)
        self.buttonnames.append(self.button3)
        self.buttonnames.append(self.button4)
        self.buttonnames.append(self.button5)
        self.buttonnames.append(self.button6)
        self.buttonnames.append(self.button7)
        self.buttonnames.append(self.button8)
        self.buttonnames.append(self.button9)
        print(self.buttonnames)
        global ipaddressfield
        self.theme_cls.primary_palette = "Green"
        self.bl = MDBoxLayout(padding=5,
                              spacing=5,
                              orientation='vertical')

        self.top_bl = MDBoxLayout(padding=5,
                                  spacing=5,
                                  orientation='horizontal',
                                  size_hint=(1, .2))

        self.gl = MDGridLayout(padding=5,
                               spacing=5,
                               rows=4)

        self.top_bl.add_widget(Label(text="Server IP:",
                                     font_size=15,
                                     font_family="SegoeUI",
                                     color=[.1, .1, .1, 1],
                                     size_hint=(.3, 1)))

        self.bind(ipaddress=self.load_widgets)

        return self.bl

    def setipaddress(self, *args):
        global ipaddress
        self.ipaddress = self.ipaddressfield.text

    def load_widgets(self, *args):
        self.ipaddressfield = TextInput(text=self.ipaddress,
                                        multiline=False,
                                        size_hint=(1, .47),
                                        pos_hint={'center_y': 0.5},
                                        halign="center")

        self.ipaddressfield.bind(text=self.setipaddress)

        self.connectbutton = Button(text="Connect",
                                    background_color=[0, 0, 1, .5],
                                    font_size=20,
                                    font_family="SegoeUI",
                                    size_hint=(.5, .5),
                                    pos_hint={'center_y': 0.5},
                                    on_press=self.connect_to_server)

        self.top_bl.add_widget(self.ipaddressfield)
        self.top_bl.add_widget(self.connectbutton)

        self.render_btns()
        self.bl.add_widget((self.top_bl))
        self.bl.add_widget(self.gl)


    def render_btns(self):
        self.gl.clear_widgets()
        for i in range(9):
            callback = partial(self.sendmessage, i + 1)
            self.gl.add_widget(Button(text=self.buttonnames[i],
                                      background_color=[0, .5, 1, .5],
                                      font_size=17,
                                      font_family="SegoeUI",
                                      on_press=callback))
我编辑并发布了完整的代码(好吧,差不多),这样你就可以试着看看发生了什么! 我没有在任何地方刷新布局!
谢谢

发布一个最小的runnableexample@inclement我添加了类代码请发布一个最小的可运行示例,而不是此代码-关键是如果看不到您正在做的事情的全部细节,就很难提供帮助,如果无法运行它,就很难进行调试,当您发布的大多数代码与问题无关时,很难关注重要的部分。