2016-03-19 1 views
0

J'essaie de mettre à jour mon label de cette façon, j'ai une étiquette et une fonction, quand j'utilise cette fonction, mon label ajoute un numéro dans son texte. De cette façon, si mon étiquette est 1 avant que je clique sur le bouton, après avoir cliqué sur un bouton, l'étiquette passe à 1 + x. Je n'ai aucune idée comment je peux le faire. C'est de l'algèbre pure.Comment ajouter le numéro dans étiquette en kivy?

.py

class PrimeiroScreen(Screen): 
def __init__(self,**kwargs): 
    self.name = 'uno' 
    super(Screen,self).__init__(**kwargs) 

def fc(self): 
    self.ids.lb1.text += "1" #its add 1 in the label, but not sum 1 to label value 

and.kv

<PrimeiroScreen>: 
GridLayout: 
    cols: 1  
    size_hint: (.3, .1) 
    pos_hint:{'x': .045, 'y': .89} 
    Label: 
     text:"0" 
     font_size: '30dp' 
     text_size: self.width, self.height 
     id: lb1 
    Button: 
     text: "Somar 3" 
     font_size: '30dp' 
     text_size: self.width - 50, self.height 
     on_press: root.fc() 

Répondre

0

Pour des raisons de généralisables, je Label sous-classe d'avoir un Property supplémentaire pour stocker la valeur, et lier le texte à cette valeur. Cela permet le formatage automatique:

from kivy.lang import Builder 
from kivy.app import App 
from kivy.properties import NumericProperty 
from kivy.uix.screenmanager import ScreenManager, Screen 
from kivy.uix.label import Label 

kv_str = ''' 
<PrimeiroScreen>: 
    GridLayout: 
     cols: 1  
     size_hint: (.3, .1) 
     pos_hint:{'x': .045, 'y': .89} 
     MyLabel: 
      text: "my value: {}".format(self.value) 
      font_size: '30dp' 
      text_size: self.width, self.height 
      id: lb1 
     Button: 
      text: "Somar 3" 
      font_size: '30dp' 
      text_size: self.width - 50, self.height 
      on_press: root.fc() 
''' 

class PrimeiroScreen(Screen): 
    def fc(self): 
     self.ids.lb1.value += 1 

class MyLabel(Label): 
    value = NumericProperty(0) 

Builder.load_string(kv_str) 

class AnApp(App): 
    def build(self): 
     rw = ScreenManager() 
     rw.add_widget(PrimeiroScreen(name='main')) 
     return rw 
AnApp().run() 
+0

Merci man! Ca marche pour moi, c'est pour ça que je me blottis. – victorcd

+0

Alors, que dois-je faire pour corriger cette valeur d'étiquette, dans le cas où cette étiquette peut être visible sur d'autres écrans, diriger cette étiquette sans changer sa valeur? – victorcd