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