控制台

在 1.9.1 版本加入.

旧版检查器的重启,旨在实现模块化并保持关注点分离。它还具备插件架构,允许你在控制台本身中添加按钮、面板或更多内容。

警告

该模块可以工作,但在某些情况下可能会失败。欢迎贡献!

用法

对于常规模块使用,请参阅 modules 文档::

python main.py -m console

鼠标导航

当“选择”按钮被激活时,您可以:

  • 在检查模式下,轻触一次控件即可选中它,而无需退出检查模式。

  • 双击控件以选中并退出检查模式(之后您可以再次操作该控件)。

键盘导航

  • "Ctrl + e":切换控制台

  • “Escape”:取消控件查找,然后隐藏检查器视图。

  • "Up":选择父级控件

  • “Down”:选择当前选中组件的第一个子组件。

  • "Left":选择上一个兄弟节点

  • "Right":选择下一个兄弟节点

附加信息

某些属性可以实时编辑。然而,由于某些属性的延迟使用,如果你不处理必要的情况,可能会导致崩溃。

插件

插件必须在应用程序的第一次Clock tick之前,或调用:attr:`create_console`之前添加到`Console.addons`中。目前不支持动态添加插件。在Console激活之前,插件的开销相当小。面板的开销更小,因为直到用户选择它们之前,不会进行任何操作。

我们默认启用了多个附加组件:

  • ConsoleAddonFps:在右上角显示FPS。

  • ConsoleAddonSelect:激活选择模式

  • ConsoleAddonBreadcrumb:在底部显示当前部件的层级结构。

  • ConsoleAddonWidgetTree:用于显示应用程序控件树的面板。

  • ConsoleAddonWidgetPanel:用于显示所选控件属性的面板

如果您需要在控制台中添加自定义部件,请使用 ConsoleButtonConsoleToggleButtonConsoleLabel

插件必须继承自 ConsoleAddon 类。

例如,这里有一个简单的插件,用于在控制台的右上角显示FPS:

from kivy.modules.console import Console, ConsoleAddon

class ConsoleAddonFps(ConsoleAddon):
    def init(self):
        self.lbl = ConsoleLabel(text="0 Fps")
        self.console.add_toolbar_widget(self.lbl, right=True)

    def activate(self):
        self.event = Clock.schedule_interval(self.update_fps, 1 / 2.)

    def deactivated(self):
        self.event.cancel()

    def update_fps(self, *args):
        fps = Clock.get_fps()
        self.lbl.text = "{} Fps".format(int(fps))

Console.register_addon(ConsoleAddonFps)

您可以创建添加面板的插件。面板的激活/停用与插件的激活/停用并不绑定,但在某些情况下,您可以使用同一个回调来停用插件和面板。以下是一个简单的“关于”面板插件示例:

from kivy.modules.console import Console, ConsoleAddon, ConsoleLabel

class ConsoleAddonAbout(ConsoleAddon):
    def init(self):
        self.console.add_panel("About", self.panel_activate,
                               self.panel_deactivate)

    def panel_activate(self):
        self.console.bind(widget=self.update_content)
        self.update_content()

    def panel_deactivate(self):
        self.console.unbind(widget=self.update_content)

    def deactivate(self):
        self.panel_deactivate()

    def update_content(self, *args):
        widget = self.console.widget
        if not widget:
            return
        text = "Selected widget is: {!r}".format(widget)
        lbl = ConsoleLabel(text=text)
        self.console.set_content(lbl)

Console.register_addon(ConsoleAddonAbout)
class kivy.modules.console.Console(**kwargs)[源代码]

基类:RelativeLayout

控制台界面

该控件由 create_console() 在模块加载时创建。在此期间,您可以在控制台上添加插件以扩展功能,或添加自己的应用程序统计/调试模块。

activated

如果控制台已激活(显示),则为 True。

add_panel(name, cb_activate, cb_deactivate, cb_refresh=None)[源代码]

在控制台中添加一个新面板。

  • cb_activate 是一个可调用对象,当用户激活面板时将被调用。

  • cb_deactivate 是一个可调用对象,当面板被停用或控制台即将隐藏时,它将被调用。

  • cb_refresh 是一个可选的可调用对象,当用户再次点击按钮以显示面板时,该对象会被调用。

激活后,由面板负责通过 set_content() 在控制台中显示内容。

add_toolbar_widget(widget, right=False)[源代码]

在控制台左上角工具栏中添加一个部件。如果你想在右侧添加部件,请使用 right=True

addons = [<class 'kivy.modules.console.ConsoleAddonSelect'>, <class 'kivy.modules.console.ConsoleAddonFps'>, <class 'kivy.modules.console.ConsoleAddonWidgetPanel'>, <class 'kivy.modules.console.ConsoleAddonWidgetTree'>, <class 'kivy.modules.console.ConsoleAddonBreadcrumb'>]

将在控制台创建时生成的插件数组

highlight_at(x, y)[源代码]

从 x/y 窗口坐标中选择一个控件。这主要在激活选择模式时内部使用。

inspect_enabled

指示检查器检查是否已启用。如果已启用,下一次触摸按下将选择触摸下方的控件。

mode

控制台的显示模式,可以是停靠在底部,也可以是浮动窗口。

on_touch_down(touch)[源代码]

接收触摸按下事件。

参数:
touchMotionEvent

收到触摸事件。该触摸位于父级坐标系中。关于坐标系统的讨论,请参阅 relativelayout

返回:

bool 如果为 True,触摸事件的派发将停止。如果为 False,事件将继续派发给控件树中的其余部分。

on_touch_move(touch)[源代码]

接收触摸移动事件。触摸坐标位于父坐标系中。

更多信息请参阅 on_touch_down()

on_touch_up(touch)[源代码]

接收触摸抬起事件。触摸坐标位于父级坐标系中。

更多信息请参阅 on_touch_down()

pick(widget, x, y)[源代码]

在根`widget`下,根据x/y坐标选择一个控件。

remove_toolbar_widget(widget)[源代码]

从工具栏中移除一个部件。

set_content(content)[源代码]

将控制台内容替换为新的内容。

widget

当前正在被选中的控件

class kivy.modules.console.ConsoleAddon(console)[源代码]

基类:object

实现插件(addons)的基类。

activate()[源代码]

当控制台显示时,插件被激活时调用的方法。

console = None

控制台实例

deactivate()[源代码]

当控制台隐藏时,插件被控制台停用所调用的方法。

init()[源代码]

当控制台实例化该插件时调用的方法。

class kivy.modules.console.ConsoleButton(**kwargs)[源代码]

基类:Button

专用于控制台的按钮。

class kivy.modules.console.ConsoleLabel(**kwargs)[源代码]

基类:Label

专用于控制台的标签按钮。

class kivy.modules.console.ConsoleToggleButton(**kwargs)[源代码]

基类:ToggleButton

专为控制台设计的ToggleButton。

kivy.modules.console.start(win, ctx)[源代码]

创建一个与控制台实例关联的Console实例,并将其绑定到Window的:meth:`~kivy.core.window.WindowBase.on_keyboard`事件上,以捕获键盘快捷键。

参数:
win:一个 Window 实例。

要绑定的应用程序窗口。

ctx:一个 Widget 或其子类

要检查的Widget。

kivy.modules.console.stop(win, ctx)[源代码]

停止并卸载给定 ctx 的所有活动检查器。