減量管理入力補助GUIその7
メインウィンドウからサブウィンドウを開き
イベント分岐で更にサブ2ウィンドウを開きたい・・・・
なぜなら
減量管理入力補助GUIのメインから
↓
トレーニング方法ウィンドウを開く
↓
各運動のやり方などが載ったウィンドウを開きたい
上記を実現する為に、サンプルコードを描いてみた
import PySimpleGUI as sg main_layout = [ [sg.Text('ワイドスクワット', font=16)], [sg.InputText(default_text='運動した回数を入力して下さい', size=(30,5),key='-WS_INPUT-'), sg.Checkbox('実施せず', font=20, default=False)], [sg.Text('ニートゥエルボー', font=16)], [sg.InputText(default_text='運動した回数を入力して下さい', size=(30,5),key='-NE_INPUT-')], [sg.Text('ランジ', font=16)], [sg.InputText(default_text='運動した回数を入力して下さい', size=(30,5),key='-RG_INPUT-')], [sg.Text('プランク', font=16)], [sg.InputText(default_text='運動した時間(分)を入力してね', size=(30,5),key='-PK_INPUT-')], [sg.Text('スワイショウ', font=16)], [sg.InputText(default_text='運動した回数を入力して下さい', size=(30,5),key='-SS_INPUT-')] [sg.Button('登録', font=25, key='-SAVE-')], [sg.Button('入力した回数をクリア', font=15, key='-CLEAR-')], [sg.Button('トレーニング方法を確認する', font=25, size=(24,4), button_color='teal', key='-TR_WICH-')] ] main_window = sg.Window('減量管理入力補助', layout=main_layout, size=(550,500)) while True: main_event, main_value = main_window.read() #ここでメインウィンドウが入力待ち状態になる if main_event is None: break elif main_event == '-TR_WICH-': #トレーニング方法を確認するが押されたら #サブ画面を開く時に毎回layoutを宣言する #エラーが発生せず、何度でもポップアップを開閉できる! sg.theme('BluePurple') #トレーニング方法のテーマ sub_layout = [ [sg.T(''*22), sg.Button('ランジについて', font=25, key='-HOWTO_RG-')], [sg.Button('プランクについて', font=25, key='-HOWTO_PK-')], [sg.Button('ワイドスクワットについて', font=25, key='-HOWTO_WS-')], [sg.Button('スワイショウについて',font=25, key='-HOWTO_SS-')], [sg.Button('ニートゥエルボーについて',font=25, key='-HOWTO_NE-')] ] sub_window = sg.Window("トレーニング方法", layout=sub_layout, size=(400,450)) while True: sub_event, sub_value = sub_window.read() #ここでサブウィンドウが入力待ち状態になる if sub_event is None: break #keyの文字列を判定しイベント処理を分岐させる elif sub_event == '-HOWTO_RG-': #ランジについてのウィンドウを開くコマンド sub2_layout = [ [sg.Text('サブ窓のテスト', font=14)], [sg.Text('なんか', font=14)] ] #プランクウィンドウオブジェクトの生成 sub2_window = sg.Window("プランクのやり方について", layout=sub2_layout, size=(600,350)) while True: sub2_event, sub2_value = sub2_window.read() #ここでサブ2ウィンドウが入力待ち状態になる if sub2_event is None: break sub2_window.close() #プランクのやり方についてのウィンドウを閉じる elif event == '-HOWTO_PK-': #プランクについてのウィンドウを開くコマンド elif event == '-HOWTO_WS-': #ワイドスクワットについてのウィンドウを開くコマンド elif event == '-HOWTO_SS-': #スワイショウについてのウィンドウを開くコマンド elif event == '-HOWTO_NE-': #ニートゥエルボーについてのウィンドウを開くコマンド sub_window.close() #トレーニング方法のウィンドウを閉じる main_window.close() #メインウインドウを閉じる
こんな感じになったが
エラーメッセージを10個ほど吐いた
エラーを直してコンパイルしてもまた新たなエラーを吐きそうなので
きちんと図に落とし込んでからコードを書こうと思う
なので、次回はサブ2ウィンドウを開く図を書き、keyイベントの小分け作業をしようと思う
ではまた!