2016-03-22 10 views
2

ich eine benutzerdefinierte Schaltfläche erstellt alsÄndern-Buttons Attribute

#: import icon kivy.garden.iconfonts.icon 
<[email protected]>: 
    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 

folgt Ich möchte diese (Custom_Button) passieren können, wie ein Kind zu verschiedenen Layouts, und einige der Attribute zu ändern, was ich will. Heres was ich meine. zum Beispiel

GridLayout: 
    custom_Button 
    custom_Button 
    custom_Button 

Aber ich mag in der Lage sein, explizit in dem zweiten Etikett auch den Text in der custom_Button, das Label-Symbol für das erste Etikett zu ändern, so dass für die drei Instanzen des cutom_Button eines anderes Symbol und Text würden angezeigt. Ich weiß wirklich nicht, wie ich das erreichen kann. Also bitte ich brauche Hilfe. Ein Beispielcode wird sehr hilfreich sein. Vielen Dank im Voraus ...

Antwort

3

Zuerst ändern Sie den Klassennamen in etwas Standard, wie CustomButton. Dann definieren Sie eine neue Eigenschaft, die enthält icon_source: um es später

<[email protected]>: 
    icon_source: 'icons/restaurant.png' 
... 

und verweisen:

Rectangle: 
    pos: self.pos 
    size: self.size 
    source: root.icon_source 

Dann ist es einfach diese für jede Instanz zu ändern, entweder in kv oder in Python:

GridLayout: 
    CustomButton: 
     icon_source: 'something/else.png' 
+0

Genau das, was ich brauchte. Danke vielmals –