Kivy - 杂项
Kivy - 异常处理
在编程中,异常处理是指在遇到运行时错误时防止程序崩溃的机制。Kivy 提供了一个名为 ExceptionHandler 的类,可以管理 Kivy 或您自己的代码引发的异常。
ExceptionManager 类在"kivy.base"模块中定义。您需要从"kivy.base"导入它并访问处理 Kivy 异常的实例。您可以使用此类为不同类型的异常添加自定义处理程序,或者在发生异常时覆盖 Kivy 的默认行为。例如,您可以使用 handle_exception 方法记录异常、向用户显示消息或正常退出应用程序。
from kivy.base import ExceptionHandler, ExceptionManager from logging import Logger class handler(ExceptionHandler): def handle_exception(self, inst): Logger.exception('Exception caught by ExceptionHandler') return ExceptionManager.PASS ExceptionManager.add_handler(handler())
处理程序函数将异常作为参数并返回以下值之一 −
ExceptionManager.PASS − 应忽略异常,因为它已由处理程序处理。
ExceptionManager.RAISE − 应重新引发异常。
ExceptionManager.USER_HANDLED −该异常由用户处理,不应记录。
您还可以使用 handle_exception 方法通过已注册的处理程序手动处理异常。
Kivy - 资源管理
"kivy.resources"模块包括在路径列表中搜索特定资源的功能,特别是当您的应用程序处理多个路径和项目时。
当 Kivy 查找任何资源(例如图像文件或"kv"文件)时,它会搜索一组预定的文件夹。您可以使用 resource_add_path() 和 resource_remove_path() 函数修改此文件夹列表。
如果您想使用任何替代默认 style.kv 或 data/defaulttheme0.png,您可以通过 resource_add_path() 方法将路径添加到您的首选替代方案中。
以下函数在"kivy.resources"模块中定义 −
resource_add_path(path) − 添加要搜索的自定义路径。
resource_find(filename, use_cache=False) − 在路径列表中搜索资源。查找结果缓存 60 秒。可以使用 use_cache=False 禁用此功能。
resource_remove_path(path) −删除搜索路径。
Kivy - 弱代理
Python 使用引用计数算法进行垃圾收集,通过计算引用某个对象的对象数量。如果垃圾收集器发现某个对象被另一个对象引用,则无法对其进行垃圾收集。如果计数器达到零,垃圾收集器将释放该对象。
弱引用是一种不保护对象免遭垃圾收集的引用。为了创建弱引用,Python 为我们提供了一个名为weakref的模块。
Kivy 在 kivy.weakproxy 模块中定义了 WeakProxy 类。为了允许垃圾收集,WeakProxy 类提供了对对象的弱引用。它通过添加比较支持有效地增强了weakref.proxy。
Kivy - 上下文
Kivy 对象 Clock、Cache 和 Builder 是全局对象。要在当前应用程序的上下文中使用它们,您必须注册它。 kivy.context 模块定义了一个 Context 类,它继承了 Python 内置 dict 类的属性。
除了 dict 方法之外,我们还在此模块中定义了以下函数 −
get_current_context() − 返回当前上下文。
egister_context(name, cls, *args, **kwargs) − 注册新上下文。