如何解决在绑定的类中更改变量会重复布局并导致kivy崩溃
我有一个有效的代码,但是当我在文本字段中写一些东西时,它会重复布局并崩溃(应该保存变量),这是怎么回事? 我的主要应用程式程式码:
class MyClientApp(MDApp):
ipaddress = ConfigParserProperty('','settings','ipaddress','app',val_type=str)
button1 = ConfigParserProperty('','buttonnames','button1',val_type=str)
button2 = ConfigParserProperty('','button2',val_type=str)
button3 = ConfigParserProperty('','button3',val_type=str)
button4 = ConfigParserProperty('','button4',val_type=str)
button5 = ConfigParserProperty('','button5',val_type=str)
button6 = ConfigParserProperty('','button6',val_type=str)
button7 = ConfigParserProperty('','button7',val_type=str)
button8 = ConfigParserProperty('','button8',val_type=str)
button9 = ConfigParserProperty('','button9',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,orientation='horizontal',size_hint=(1,.2))
self.gl = MDGridLayout(padding=5,rows=4)
self.top_bl.add_widget(Label(text="Server IP:",font_size=15,font_family="SegoeUI",color=[.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,.47),pos_hint={'center_y': 0.5},halign="center")
self.ipaddressfield.bind(text=self.setipaddress)
self.connectbutton = Button(text="Connect",background_color=[0,1,.5],font_size=20,size_hint=(.5,.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],.5,font_size=17,on_press=callback))
我编辑并发布了完整代码(差不多了),所以您可以尝试看看会发生什么! 我没有在任何地方刷新布局! 谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。