我创建了一个自定义按钮,如下所示
#: import icon kivy.garden.iconfonts.icon
<custom_Button@Button>:
background_normal: 'icons/backg.png'
RelativeLayout:
size: self.parent.width, self.parent.height
top: self.parent.top
right: self.parent.right
Label:
canvas.before:
Color:
rgba: 1,1,1,1
Rectangle:
pos: self.pos
size: self.size
source: 'icons/restaurant.png'
color: 0,0,0,1
id: icon_name
markup: True
font_size: '20dp'
text: '{}'.format(icon('ion-settings', 38))
pos_hint: {'center_y': .5, 'right': .25}
size_hint: .18, .9
Label:
text:'Change Settings'
id: label
color: 0,0,0,1
text_size: self.size
halign: 'left'
valign: 'middle'
font_size: '20dp'
pos_hint: {'center_y': .5, 'right': 1}
size_hint: .7, .9
我希望能够将此(Custom_Button)作为子项传递给不同的布局,并将某些属性更改为我想要的。这是我的意思。 例如,
GridLayout:
custom_Button
custom_Button
custom_Button
但我希望能够显式更改custom_Button中第一个标签的标签图标,以及第二个Label中的文本,这样对于cutom_Button的三个实例,将显示不同的图标和文本。我真的不知道如何实现这一目标。所以,我需要一些帮助。 示例代码将非常有用。提前谢谢......
答案 0 :(得分:3)
首先,将类名更改为标准名称,例如CustomButton
。然后,定义包含icon_source
:
<CustomButton@Button>:
icon_source: 'icons/restaurant.png'
...
稍后再参考:
Rectangle:
pos: self.pos
size: self.size
source: root.icon_source
然后在kv
或python中为每个实例更改这个很简单:
GridLayout:
CustomButton:
icon_source: 'something/else.png'