なりなり日記

スマホ、GARMIN、トレラン、サイクリング、テニス、プログラミングの情報を中心に発信中!

【Python入門】Pythonistaでタイマーを作る(2)


スポンサーリンク

こんにちは、なりなりです(^ ^)

Pythonista 3

Pythonista 3

  • omz:software
  • 仕事効率化
  • ¥1,200


【Python入門】Pythonistaでタイマーを作る(1) - なりなり日記

前回、Text Fieldの表示が更新されないという問題にぶつかりましたが、これには、スレッドを使うのが良いようです。

import ui
import threading

def count_down(textfield):
  global times
	
  if times > 0:
    t = threading.Timer(1, count_down,args=[textfield])
    t.start()
    times -= 1
    textfield.text = str(times)
	
def button_tapped(sender):
  global times
	
  textfield = sender.superview['textfield1']
  times = int(textfield.text)
  count_down(textfield)
		
v = ui.load_view()
v.present('sheet')


キーとなるのが

import threading

threadingモジュールのインポートです。

t = threading.Timer(1, count_down,args=[textfield])

その中のTimerメソッドで1秒後に自分自身の関数を再帰的に呼び出すことで、繰り返し実行されます。

Timerメソッドは「args=」で呼び出す関数の引数を指定出来ますが、似たようなメソッドで引数指定出来ないものも有るので、常に

threading.Timer(1, lambda:count_down(textfield))

この様にラムダ式を使った方がスマートかもしれません。

さあ、これで、タイマーの基本的は作り方が分かりましたね(^-^)


【Python入門】tkinkerでタイマーを作る - なりなり日記

続きはこちらですが、一回、脱線します!