あなたのコードは、2つの異なるラベルウィジェットを作成し、それらをウィジェットツリーに追加します。以前に作成したウィジェットの特定のプロパティを変更する場合:
# Create Label and reference it to var 'a'
a = Label(text='60')
self.add_widget(a)
time.sleep(5)
# You can use the 'a' var to access the previously created Label
# and modify the text attribute
a.text = '50'
はEDIT:ラベルのテキストプロパティの変更を遅延させるためには、この最後の1はしばらくあなたのアプリを凍結する(代わりにtime
のClock
使用しますタイマーは)
from kivy.clock import Clock
def update_label(label_widget, txt):
label_widget.text = txt
# Create Label and reference it to var 'a'
a = Label(text='60')
self.add_widget(a)
# In five seconds, the update_label function will be called
# changing the text property of the 'a' Label to "50"
Clock.schedule_once(lambda x: update_label(a, "50"), 5)
EDIT2終了:
は、あなたが定期的にラベル変更するには、使用することができますカウントダウンとラベルをClock.schedule_interval
from kivy.clock import Clock
def countdown(label_widget):
# Convert label text to int. Make sure the first value
# is always compliant
num = int(label_widget.text)
# If the counter has not reach 0, continue the countdown
if num >= 0:
label_widget.text = str(num - 1)
# Countdown reached 0, unschedulle this function using the
# 'c' variable as a reference
else:
Clock.unschedule(c)
# Create Label and reference it to var 'a'
a = Label(text='60')
self.add_widget(a)
# Every 1 second, call countdown with the Label instance
# provided as an argument
c = Clock.schedule_interval(lambda x: countdown(a), 1)
これは本当に役に立ちました。ただし、グラフィカルユーザーの顔が読み込まれる前にラベルのテキストが変更され、画面に到達するまでに既にテキストが変更されています。実際の画面でいったん変更したら、どのようにテキストを変更するのですか? –
ああ、そうです。これは 'time.sleep(5)'のためです。 Kivyでは、これによりアプリケーションがフリーズされます。特定のイベントをスケジュールできる場合は、代わりに「時計」を使用する必要があります。私はこれを行う可能な方法で編集します – ODiogoSilva
私はこの解決策を試して、 'Clock.schedule_once(lambda x:update_label(a、" 50 ")、5)'と次に 'Clock.schedule_once(lambda x:update_label (a、 "40")、5)。しかし、これはちょうど最初の行をスキップし、40を表示するようにまっすぐに行った。どのように私はこれを解決するだろう。これはとても便利です。 –