【发布时间】:2020-08-13 15:36:28
【问题描述】:
我有一个动态屏幕,它是根据您在另一个屏幕上单击的按钮生成的。问题是每次我进入屏幕时,按钮都会重新生成并添加到现有按钮中。
原因是我使用了 on_enter 方法,但我不知道如何使用 on_kv_post 例如,因为这些事件发生在启动应用程序时。
每次返回此屏幕时如何初始化屏幕?
class ClientEnvsGrid(Screen):
envProp = StringProperty('')
def __init__(self, **kwargs):
super(ClientEnvsGrid, self).__init__(**kwargs)
def on_enter(self, *args):
clientProp = self.manager.get_screen('clientlist').clientProp
try:
client_filepath = os.path.join('clients', clientProp, "environments.json")
client_file = open(client_filepath)
clientdata = json.loads(client_file.read())
print(clientdata)
self.ids.clientlabel.text = clientdata["clientname"]
for envs in clientdata["environments"]:
print(envs["name"])
envbutton = Button(text=envs["name"])
envbutton.bind(on_press=lambda *args: self.pressed('envbtn', *args))
self.ids.environments.add_widget(envbutton)
except:
print("No client data found")
self.manager.current = 'clientlist'
def pressed(self, instance, *args):
self.envProp = args[0].text
【问题讨论】:
标签: python python-3.x kivy kivy-language