こんにちは、なりなりです(^ ^)
さて、Pythonの基本的な文法がわかったところで、いよいよプログラミングします。
今回はiPhoneのPythonアプリ、Pythonistaでプログラミングです(^-^)
タイトル通り、タイマーを作るのですが、まずは基本的な
- UIの作り方と使い方
- 1秒毎にカウントダウンする方法
を勉強します。
最初のプログラムの完成形はこちら。
テキストボックスに数値を入れてSTARTボタンを押すと、0までカウントダウンします。
簡単そうですが、意外と苦戦しました(⌒-⌒; )
実験1
まずはインタラクティブモードで実験です。
要は、ループの中で1秒ウェイトがかかれば良いのですよね。
>>> from time import * >>> times=10 >>> while times > 0: ... print(times) ... times -= 1 ... sleep(1) ... 9 8 7 6 5 4 3 2 1
これは、timeモジュールの中のsleep関数を使ったものです。sleepの引数は秒です。
1秒毎に変数timesがカウントダウンされる様子が見れるので、これが使えると思いました。
実験2
実験1の方法にUIを組込んでみます。
ここで+ボタンを押して
Script with UIを選び
ファイル名を入れたらCreateを押すと
ソースファイル.pyとUIのデザインファイル.pyuiが生成されます。
こちら、.py
こちら、.pyuiです。
まず、.pyuiで+ボタンを押して
Text FieldウィジェットとButtonウィジェットを配置します。ドラッグして、位置とサイズを適当に調整したら、ウィジェットを選択した状態で右上のiボタンを押してプロパティを編集します。
ここでは、Text FieldのTextとButtonのTitleを編集したら、再びiボタンを押します。
するとこうなって、取り敢えずUIは完成!
あ、いや、もう1つ、ButtonのActionにbutton_tappedを入力します。これは、ボタンを押した時に実行する関数名です。
import ui import time def button_tapped(sender): textfield = sender.superview['textfield1'] times = int(textfield.text) while times > 0: time.sleep(1) times -= 1 textfield.text = str(times) v = ui.load_view() v.present('sheet')
.pyのソースコードは、この様に変更します。
ボタンをタップした時に呼ぶ関数button_tappedは引数にsenderを持たせます。
sender.superview['textfield1']によって、sender(Button)の外のスコープにあるtextfield1という名前のウィジェットを返します。
これのTextプロパティにtimes変数をカウントダウンしながら代入するプログラムなのですが、
スタートボタンを押すと表示が固まってしまい。
カウントダウンが終わると、ようやく表示が更新されます。
うーん、これではダメだ。
ウィジェットの表示を定期的に更新するには、他の手段が必要な様です。
といことで、次回に続きます。
【Python入門】Pythonistaでタイマーを作る(2) - なりなり日記
続きはこちら!