2016-03-19 7 views
0

Ich versuche, mein Etikett auf diese Weise zu aktualisieren, ich habe ein Etikett und eine Funktion, wenn ich diese Funktion verwende, fügt mein Etikett eine Nummer in seinem Text hinzu. Auf diese Weise, wenn mein Label 1 ist, bevor ich auf die Schaltfläche klicke, nachdem ich auf eine Schaltfläche geklickt habe, ändert sich die Bezeichnung zu 1 + x. Ich habe keine Ahnung, wie ich das machen kann. Es ist reine Algebra.Wie zu Nummer in Label in Kivy hinzufügen?

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() 

Antwort

0

Aus Gründen des Verallgemeinerungs, würde ich Label Unterklasse ein zusätzliches Property haben den Wert zu speichern, und den Text auf diesen Wert binden. Das ermöglicht automatische Formatierung:

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

Danke Mann! Es funktioniert für mich, Es ist das, für das ich gesucht habe. – victorcd

+0

Also, was muss ich tun, um diesen Label-Wert zu beheben, für den Fall, dass dieses Label in anderen Bildschirm sichtbar sein kann, führen Sie dieses Etikett, ohne seinen Wert zu ändern? – victorcd