こちらがアプリプログラミングコードの本体部分
前回の続き。ちなみに、ウィンドウ描画のループをしないとどうなるか。
1行目のコードではアプリケーションウィンドウのタイトルとサイズを設定している。
window = SG.Window('Widget 演習中', layout,size=(600,400)) # ウィンドウのタイトルとサイズを設定
while True: # ウィンドウを表示し続ける
event, values = window.read()
print(event, values)
if event == SG.WIN_CLOSED or event == '閉じる':
break
if event == '実行':
# テキストボックスに結果表示
window['姓名'].update(values['姓']+values['名'])
window.close()
赤色着色部のコードを削除してみた場合。
event, values = window.read() で入力待ちの画面は表示されるが、テキスト入力して実行ボタンを押しても直ちに画面が閉じられるだけで何も反応しない。何も操作しないと延々と最初の表示画面のままとなる。
window = SG.Window('Widget 演習中', layout,size=(600,400)) # ウィンドウのタイトルとサイズを設定
while True: # ウィンドウを表示し続ける
event, values = window.read()
print(event, values)
if event == SG.WIN_CLOSED or event == '閉じる':
break
if event == '実行':
# テキストボックスに結果表示
window['姓名'].update(values['姓']+values['名'])
window.close()
while True: 繰り返し処理
VB でも常用していたループ文だが、引数 True(条件なし)で実行すると、超高速動作のため目視は不可能だが、延々と再描画処理を繰り返して”イベント”を感知する役割を果たす。終了コマンドはない。
window.read : メソッド(関数?)
event, values = window.read() は、イベント監視の役目。これにより、イベント処理が可能になる。
event は組込変数であり、イベントを検知したエレメント名 window[‘姓名’] を取得し、updateメソッドの動作を行うにあたり、同じく組込変数の values[キー名] で値を取得する。
サンプルのように複数のキー名の場合は演算記号等でつなぎ、update(values[‘姓’]+values[‘名’]) となる。
※ 取得するだけなので、実際の動作処理は If 文などで行う。
if : 条件分岐イベント処理の実際
if event == SG.WIN_CLOSED or event == ‘閉じる’:
Python に限らないようだが、等号記号は二種類ある。”=”は代入、”==”は照合を行うようだ。
ここでの event 変数は組込定数の SG.WIN_CLOSED でウィンドウの”閉じる”ボタンが押された時を感知、または”閉じるボタン”が押された時(イベント)を検知する。行末の “:”(コロン)は 一連の処理が継続することを意味している。
つづく break によってループを抜けて、window.close() にジャンプしてアプリケーション終了である。
“実行ボタン”が押された場合には if event == ‘実行’: となり window[‘姓名’].update(values[‘姓’]+values[‘名’]) によって、実行結果を表示するテキストボックスの情報を更新している。
Values : 値の取得と演算の基本
ここで重要なのは、単なる入力文字列ではなく演算結果を出力していること。
文字列の結合は、単純に”+”である。“痛いやつ”+1000の結果は”痛いやつ1000“、”1000″+”1500“も”2500“。
引用符を付けない数値同士であれば純粋に加算となり、050+2023の結果は2073。
コメント