2016-03-19 6 views
0

私はこの方法で私のラベルを更新しようとしています。私はラベルと関数を持っています。私はこの関数を使うとラベルに数値を付け加えています。この方法で、ボタンをクリックする前に私のラベルが1の場合、ボタンをクリックすると、ラベルは1 + xに変わります。私はこれをどうすればいいのか分かりません。それは純粋な代数です。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() 

答えて

0

一般化のために、私は、値を格納し、その値にテキストをバインドするために、追加のPropertyを持っているLabelをサブクラス化します。これにより、自動フォーマットが可能になります。

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

ありがとうございます!それは私のために働く、それは私がloockingしていたことです。 – victorcd

+0

それで、このラベル値を修正するために何をしなければならないのですか? – victorcd

関連する問題