我有一个带有两个屏幕的应用程序登录屏幕和秘密屏幕。 登录屏幕由kv文件生成并自动加载。
如果提交了登录数据,我的应用程序会解密connected.py并导入它。
我的connected.py看起来像:
secret_kv = '''
<Connected>:
RelativeLayout:
id: layout
class Connected(Screen):
Builder.load_string(secret_kv)
def __init__(self, **kwargs):
super(Connected, self).__init__(**kwargs)
def disconnect(self):
self.manager.transition = SlideTransition(direction="right")
self.manager.current = 'login'
self.manager.get_screen('login').resetForm()
self.manager.remove_widget(self.manager.get_screen('connected'))
del sys.modules["connected"]
def remove(self):
print self.remove_widget('raised_button')
现在我的问题:
它运行正常,但每次登录都会触发Builder.load_string(secret_kv)
,因此秘密屏幕的布局会再次出现并覆盖其他布局!
是否可以通过触发Builder.load_string()
某事disconnect(self)
来清除like Builder.**unload**_string()
?
我尝试用del sys.modules["connected"]
卸载模块,但Kivy会保留所有包含小部件的秘密屏幕!
如果有一个棘手的python或kivy方法清除注销disconnect(self)
所有对象和数据,那就太好了。
由于
答案 0 :(得分:1)
我找到了使用多个kv和py文件的解决方案!
from lang import Builder
Builder.load_file('filename.kv')
Builder.unload_file('filename.kv')
或main_widget.clear_widgets()