今回はTextviewです。
TextField,labelとほぼ同じですが、複数行の場合、改行コードが必要です。
改行コードは¥nではなく、\nでないとだめです。
🔵Textview
テキストビュー名は「textview1」です。
(1)セット関数
呼び出されるごとに、引数の文字列をセットし、改行コードを付加します。
def setTextview(sender, txt):
txtview = sender.superview['textview1']
txtview.text += (txt + \n)
(2)呼出し
txt = 'test'
setTextview(sender, txt)
🔴サンプルプログラム
開始値をテキストフィールド1に、終了値をテキストフィールド2に入力し、
2のべき乗か否かをチェックし、2のべき乗ならその数値を
テキストビュー1にセットしていき、同時に、その個数を順次、
ラベル1に表示していきます。
実行はボタン1押下でスタートです。
(1)UI画面
(2)ソースコード
#Sample program for checking of 'power of 2'
import ui
#Checking for 'power of 2' or not
def checkPower(sender, num):
n2 = 0
c = num
ret = [0, 0]
if num == 1: #2^0
ret[0] = 1
ret[1] = 0
return ret
elif num == 0:
return ret
if (num & (num-1)) == 0:
ret[0] = 1 #set flg.
while c != 0:
c = c/2
n2 += 1 #power
if c < 2:
break
ret[1] = n2
return ret
#Checking for range
def checkStartToEnd(sender, st, ed):
if st < ed:
return 0
else:
return 1
#Start Button Click Proc.
def StartBtnOn(sender):
txt1 = sender.superview['textfield1'] #start num.
txt2 = sender.superview['textfield2'] #end num.
txtv = sender.superview['textview1'] #result
labelN = sender.superview['label6'] #Num. of matching
txtv.text = ''
sNum = int(txt1.text)
eNum = int(txt2.text)
matchNum = 0
ret = checkStartToEnd(sender, sNum, eNum)
if ret == 0:
ct = sNum #current num.
res = [0, 0] #list of return. flg,power
while ct < eNum:
res = checkPower(sender, ct)
if res[0] != 0:
txtv.text += (str(ct) + ' ' + '2^' + str(res[1]) + '\n')
matchNum += 1
labelN.text = str(matchNum)
ct += 1
else:
print('開始値と終了値の関係が不正です。正しく入力してください。')
v = ui.load_view()
v.present('sheet')
(3)実行結果
開始値を0、終了値を100にした場合の実行結果を以下に示します。