Kitaya lab

オリジナル課題の追加5(Phase1)



パラメータを設定後"Start"ボタンを押すとPhase=1となり、課題待機画面へ移行します。



以下が待機画面中に実行されるコードです。
待機画面なのでボタンやメッセージの配置をし、課題の開始時間が来たかチェックするだけです。
=======================================================================================================================
       if Phase == 1:  # Waiting phase (Task will start when the set time arrives)
           if Phase1_Init == 0: # If the initialization for phase1 has not done
               PutPreTaskButton()  # Put "StartNow" and "Back" button on Main window
               mStatusVar = StringVar(MainWindowRoot)  # Create a variable for status display
               mStatus = ttk.Label(MainWindowRightFrame, textvariable=mStatusVar)  # Create label object and link it with Mainwindow
               mStatus.place(x=10, y=0)    # Place label object on the Main window
               mOngoingResultVar = StringVar(MainWindowRoot)   # Create a variable for progress display
               Phase1_Init = 1 # Flat that phase1 has done
           mStatusVar.set('Test task (' + str(GetTaskID()) + ')    Waiting...')    # Show current status of the Operant House
           if IsStartTime() == 1:  # Check whether task start time arrives
               StartNow()  # Start task (Phase number will be "2")
=======================================================================================================================


まず初期化の部分です。
=======================================================================================================================
       if Phase1_Init == 0: # If the initialization for phase1 has not done
               PutPreTaskButton()  # Put "StartNow" and "Back" button on Main window
               mStatusVar = StringVar(MainWindowRoot)  # Create a variable for status display
               mStatus = ttk.Label(MainWindowRightFrame, textvariable=mStatusVar)  # Create label object and link it with Mainwindow
               mStatus.place(x=10, y=0)    # Place label object on the Main window
               mOngoingResultVar = StringVar(MainWindowRoot)   # Create a variable for progress display
               Phase1_Init = 1 # Flat that phase1 has done
=======================================================================================================================

PutPreTaskButton()を実行すると"StartNow"、"Back"ボタンが配置されます。



mStatusVarは現在の課題の状態を示す文字列が入る変数です。


これとリンクしたラベルオブジェクトを生成し、mStatus.place(x=10, y=0)でメインウィンドウに配置しています。
ここでは.place()と言うコマンドを使っていますがこのコマンドを使うことで特定のピクセル座標にオブジェクトを配置することが出来ます。
(これに対し、これまで使ってきたgrid()ではウィンドウ上のフレームをエクセルの様な表モードにし、指定された行列にオブジェクトを配置します。この際セルのサイズはオブジェクトのサイズに合わせて自動的に調整されます)


mOngoingResultVarはセッションの最中および終了後にメインウィンドウに表示される結果の文字列を保持する変数です。
ここでは宣言するだけです。



次のmStatusVar.set('Test task (' + str(GetTaskID()) + ')    Waiting...')で待機中メッセージを代入します。


そして課題開始時間になったらIsStartTime()で返る値が1になるので、StartNow()を実行し、課題をスタートさせます。
StartNow()ではメインウィンドウのクリア、課題開始時刻の記録が行われ、Phaseに1が足されます。後ほど出ますが開始時刻はGetTaskStartedYear()で取得できます)