Kivy 基础

该模块包含Kivy的核心功能,并非面向最终用户。欢迎浏览,但请注意,直接调用这些方法可能会导致不可预测的行为,因为这些调用直接访问了应用程序的事件循环。

kivy.base.EventLoop = <kivy.base.EventLoopBase object>

事件循环实例

class kivy.base.EventLoopBase[源代码]

基类:EventDispatcher

主事件循环。该循环负责处理输入的更新以及事件的派发。

add_event_listener(listener)[源代码]

为获取触摸事件添加一个新的事件监听器。

add_input_provider(provider, auto_remove=False)[源代码]

添加一个新的输入提供程序来监听触摸事件。

add_postproc_module(mod)[源代码]

添加一个后处理输入模块(默认包含双击、三击、去抖动和保持触摸)。

async async_idle()[源代码]

idle() 相同,但用于在异步事件循环中运行时。

close()[源代码]

退出主循环并停止所有已配置的输入提供器。

dispatch_input()[源代码]

EventLoopBase.idle() 调用,用于从输入提供者读取事件,将事件传递给后处理程序,并分发最终事件。

ensure_window()[源代码]

确保我们有一个窗口。

exit()[源代码]

关闭主循环并关闭窗口。

idle()[源代码]

此函数在每一帧之后被调用。默认情况下:

  • 它将时钟“推进”到下一帧。

  • 它读取所有输入并分发事件。

  • 它将 on_updateon_drawon_flip 事件分发给窗口。

on_pause()[源代码]

on_pause 的事件处理器,当事件循环暂停时将被触发。

on_start()[源代码]

on_start 的事件处理器,将在所有输入提供程序启动后立即触发。

on_stop()[源代码]

on_stop 事件的事件处理器,该事件在所有输入提供程序停止后立即触发。

post_dispatch_input(etype, me)[源代码]

当我们需要分发输入事件时,此函数由 EventLoopBase.dispatch_input() 调用。该事件被分发给所有监听器,如果被捕获,则分发给捕获的控件。

remove_android_splash(*args)[源代码]

移除 SDL2 引导程序中的 Android 预启动画面。

remove_event_listener(listener)[源代码]

从列表中移除一个事件监听器。

remove_input_provider(provider)[源代码]

移除一个输入提供器。

在 2.1.0 版本发生变更: 如果提供者在自动移除列表中存在,它也将被移除。

remove_postproc_module(mod)[源代码]

移除一个后处理模块。

run()[源代码]

主循环

set_window(window)[源代码]

设置用于事件循环的窗口。

start()[源代码]

必须在调用 EventLoopBase.run() 之前调用此方法。这将启动所有已配置的输入提供程序。

在 2.1.0 版本发生变更: 该方法可被多次调用,但事件循环只会启动一次。

stop()[源代码]

停止所有输入提供者,并调用通过 EventLoop.add_stop_callback() 注册的回调函数。

在 2.1.0 版本发生变更: 该方法可被多次调用,但事件循环只会停止一次。

property touches

返回当前处于按下或移动状态的所有触摸点的列表。

class kivy.base.ExceptionHandler[源代码]

基类:object

runTouchApp() 中捕获异常的基础处理器。您可以按如下方式对其进行子类化并扩展::

class E(ExceptionHandler):
    def handle_exception(self, inst):
        Logger.exception('Exception caught by ExceptionHandler')
        return ExceptionManager.PASS

ExceptionManager.add_handler(E())

然后,所有异常将被设置为通过,并记录到控制台!

handle_exception(exception)[源代码]

ExceptionManagerBase 调用以处理异常。

默认返回 ExceptionManager.RAISE,该值会重新抛出异常。返回 ExceptionManager.PASS 表示异常已被处理,应予以忽略。

如果异常在多个 Kivy 异常处理层级中冒泡,并且返回了 ExceptionManager.RAISE,则可能会使用相同的异常多次调用此方法。

kivy.base.ExceptionManager: ExceptionManagerBase = <kivy.base.ExceptionManagerBase object>

处理kivy异常的 ExceptionManagerBase 实例。

class kivy.base.ExceptionManagerBase[源代码]

基类:object

ExceptionManager 管理异常处理器。

PASS = 1

异常应被忽略,因为它已由处理器处理。

RAISE = 0

异常应被重新抛出。

add_handler(cls)[源代码]

向堆栈中添加一个新的异常处理器。

handle_exception(inst)[源代码]

runTouchApp() 主循环中发生异常时调用。

remove_handler(cls)[源代码]

从堆栈中移除异常处理器。

async kivy.base.async_runTouchApp(widget=None, embedded=False, async_lib=None)[源代码]

runTouchApp() 相同,但它是一个协程,可以在现有的异步事件循环中运行。

async_lib 是要使用的异步库。有关详细信息及示例用法,请参阅 kivy.app

在 2.0.0 版本加入.

kivy.base.runTouchApp(widget=None, embedded=False)[源代码]

静态主函数,用于启动应用程序循环。你可以通过以下参数访问一些魔法功能:

参见 kivy.app 获取示例用法。

参数:
<empty>

为了使事件分发正常工作,至少需要一个输入监听器。否则,应用程序将退出。(MTWindow 充当输入监听器)

widget

如果你只传入一个widget,系统将创建一个MTWindow,并将你的widget作为根widget添加到该窗口中。

embedded

不进行事件分发。这将由你来完成。

widget + embedded

不进行事件分发。这将是你的工作,但我们会尝试获取窗口(必须由你事先创建)并将控件添加到其中。这对于将Kivy嵌入其他工具包(如Qt,参见kivy-designed)非常有用。

kivy.base.stopTouchApp()[源代码]

通过退出主循环来停止当前应用程序。

参见 kivy.app 获取示例用法。