更改自定义按钮属性

时间:2016-03-22 21:09:59

标签: python kivy

我创建了一个自定义按钮,如下所示

#: 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的三个实例,将显示不同的图标和文本。我真的不知道如何实现这一目标。所以,我需要一些帮助。 示例代码将非常有用。提前谢谢......

1 个答案:

答案 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'