微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何像 Kivy 中的 CSS 一样按类名选择小部件?

如何解决如何像 Kivy 中的 CSS 一样按类名选择小部件?

例如,我想为应用程序中的所有按钮添加背景颜色:

<Layout1>:
    <BoxLayout>:
        <Button>:
            text: "btn 1"
        <Button>:
            text: "btn 2"
        <Button>:
            text: "btn 3"
    <Button>:
        text: "Another button outside the Boxlayout"

<Layout2>:
    <GridLayout>:
        cols: 2
        <Button>:
            text: "btn 1 in a grid"
        <Button>:
            text: "btn 2 in a grid"

但我不想像这样手动为所有这些人做:

...
    <Button>:
        text: "btn 1"
        background_color: (1,1)
    <Button>:
        text: "btn 2"
        background_color: (1,1)
    <Button>:
        text: "btn 3"
        background_color: (1,1)
...

所以我正在寻找一种更短的方法,比如我们可以在所有按钮上放置一个类似 CSS 的类并通过类名访问它们。类似的东西:

...
    <Button>:
        text: "btn 1"
        class: "btn_class"
    <Button>:
        text: "btn 2"
        class: "btn_class"
    <Button>:
        text: "btn 3"
        class: "btn_class"
...

在python代码中:

for btn in get_widgets_by_classname("btn_class") :
    btn.background_color = (1,1)

在文档 https://kivy.org/doc/stable/api-kivy.lang.html#overview 中它说:

您可以针对特定类别的小部件(类似于 CSS 概念 类的)通过使用 cls 属性(例如 cls=MyTestWidget)

但我对 cls 属性的使用不是很清楚。

解决方法

美好的一天。在 kvlang 中,您有两个选项可以创建模板小部件。

  1. 创建自定义小部件:

自定义小部件允许您创建一个新的、定义的小部件。

<CustomButton@Button>:
    background_color: (1,1)

然后使用以下语法在您想要的任何位置使用按钮。 CustomButton:

  1. 使用规则:

在脚本开始时,使用以下语法为小部件分配属性。

<Button>:
    background_color:(1,1)

在创建后调用的任何小部件都将使用这些属性创建。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。