我目前正在开发具有kivy功能的嵌入式系统。
因此,我发现如果我制作许多屏幕,它将大大降低程序运行速度。
有没有一种动态控制屏幕的好方法,这样它就不会变慢?
例如,当我在如下所示的ScreenManager中有4个屏幕时,
MyScreenManager:
id: myscreenmanager
transition: FadeTransition()
SCRN_LOADING:
SCRN_IDLE:
SCRN_CALCULATING:
SCRN_RESULT:
是否可以:
首先初始化加载SCRN_LOADING
。
在加载时加载SCRN_IDLE
和SCRN_CALCULATING
。
完成加载后,移除SCRN_LOADING
屏幕对象。
在计算时加载SCRN_RESULT
。
返回空闲状态时,请移除SCRN_RESULT
屏幕对象。
我猜这可以提高性能。
当前,屏幕滞后非常困难。因此,如果无法解决性能问题,则可能必须使用C重新启动整个项目。
请帮帮我!
答案 0 :(得分:0)
我想您可以在kv之外声明屏幕,然后根据需要在屏幕管理器中将其添加到您的kv中
MyScreenManager:
id: myscreenmanager
transition: FadeTransition()
在您的Window类中:
from kivy.uix.screenmanager import ScreenManager, Screen
...
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.sm = self.ids.myscreenmanager
self.loading = Screen(name='SCRNLOADING')
self.idle = Screen(name='SCRN_IDLE')
self.calc = Screen(name='SCRN_CALCULATING')
self.sm.add_widget(self.loading)
self.set_idle()
def add_scrn(self):
self.sm.add_widget(self.idle)
self.sm.add_widget(self.calc)
self.sm.remove_widget(self.loading)
我不太习惯Clock
类,但是我敢肯定,在这里您需要它来正确加载屏幕