如何在 Kivy 中的 CSS 中按类名选择小部件?
Posted
技术标签:
【中文标题】如何在 Kivy 中的 CSS 中按类名选择小部件?【英文标题】:How to select widgets by class name like in CSS in Kivy? 【发布时间】:2021-09-10 06:09:23 【问题描述】:例如,我想为应用程序中的所有按钮添加背景颜色:
<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, 0, 0, 1)
<Button>:
text: "btn 2"
background_color: (1, 0, 0, 1)
<Button>:
text: "btn 3"
background_color: (1, 0, 0, 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, 0, 0, 1)
在文档https://kivy.org/doc/stable/api-kivy.lang.html#overview 中说:
您可以定位特定类别的小部件(类似于 CSS 概念 使用 cls 属性(例如 cls=MyTestWidget)
但我对 cls 属性的使用不是很清楚。
【问题讨论】:
【参考方案1】:美好的一天。在 kvlang 中,您有两个用于创建模板小部件的选项。
-
创建自定义小部件:
自定义小部件允许您创建新的、已定义的小部件。
<CustomButton@Button>:
background_color: (1,0,0,1)
然后使用下面的语法在任何你想要的地方使用按钮。
CustomButton:
-
使用规则:
在脚本的开头,使用以下语法将属性分配给小部件。
<Button>:
background_color:(1,0,0,1)
创建后调用的任何小部件都将使用这些属性创建。
【讨论】:
以上是关于如何在 Kivy 中的 CSS 中按类名选择小部件?的主要内容,如果未能解决你的问题,请参考以下文章