ryotankの備考録日記

趣味の電子工作についての備考録などなど

減量管理入力補助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イベントの小分け作業をしようと思う


ではまた!