Kivy 简明教程

Kivy - Console

Kivy 中的控制台工具类似于检查器工具,它还提供了一个附加功能,即借助其加载项架构添加按钮和面板。与检查器类似,“kivy.modules.console”模块具有命令行界面,还提供了一个用于以编程方式使用该工具的 API。

在命令行用法中,使用 Python 可执行文件的“-m”选项加载模块。

python main.py -m console

要激活 Kivy 控制台,请使用 create_console() 函数从控制台模块调用该函数,并使用窗口和应用程序对象作为参数。您需要将以下の语句放在应用程序类的 build() 方法中。

from kivy.modules import console

class Demo(App):
   def build(self):
      button = Button(text="Test")
      console.create_console(Window, self)
      return button

假设您使用“slider.py”程序开发了一个 Kivy 应用程序,该程序具有以下界面。

kivy console slider

该应用程序具有三个滑块控件,用于帮助更改上方文本的颜色。在 slider.py 文件的 build() 方法中添加对 create_console() 函数的调用(如上所述),并运行它。首先,将看到上述界面。按 ctrl+E 激活控制台工具。

定义了以下按键组合——

  1. "Ctrl + e" —— 切换控制台

  2. "Escape" −取消控件查找,然后隐藏检查器视图

  3. "Up" −选择父控件

  4. "Down" - 选择当前所选控件的第一个子控件

  5. "Left" −选择前面的兄弟姐妹控件

  6. "Right" −选择后面的兄弟姐妹控件

当控制台工具被激活时,它在中间显示一个带有「选择」、「属性」和「树」按钮的栏,右侧有一个 FPS 按钮。

kivy console fps button

点击「树」按钮,您将获得界面的控件树。从树中选择「Slider」控件。

kivy console tree button

现在,按下「属性」按钮。控件所有属性的可滚动列表将可用。

kivy console properties button

向下滚动到值属性,双击以获取一个可编辑的框,其中显示了当前值,您可以将其更改。

kivy console property value

按 ESC 移除控制台。您应该从控制台中看到您设置好值的「Slider」。

kivy console slider value

Addons

控制台工具的一个重要功能是加载项架构,这允许您向其添加按钮和面板。默认情况下激活的加载项有−

  1. ConsoleAddonFps - 在右上角显示 FPS。

  2. ConsoleAddonSelect - 激活选择模式。

  3. ConsoleAddonBreadcrumb - 在底部显示当前控件的层次结构。

  4. ConsoleAddonWidgetTree - 面板以显示应用程序的控件树。

  5. ConsoleAddonWidgetPanel - 面板以显示所选控件的属性。

要激活加载项,必须在调用 create_console 之前将其添加到 Console.addons。

About Addon

让我们给控制台工具添加一个「关于」按钮。它在中间的控制台工具工作区中显示包括其 ID 在内的对象描述。

在 App 类定义之前,在 slider.py 中添加以下代码 −

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)

如果您再次运行 slider.py 脚本,您会在 Tree 按钮旁边看到已添加的 About 按钮。在小部件树中找到 Slider 并单击 About 按钮可显示该滑动小部件的 object ID。

kivy console about button