ryotankの備考録日記

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

減量管理入力補助GUIその9

悩んでいた複窓実装の問題が解決した!

イベントを振り分ける事で解消された

つまりはeventに入っているkeyを確認して条件分岐をさせた

書き方として

def NE_window():
   #実際にここに実現したい処理を記載する
   pass 

となり

while True:
        sub_event, sub_value = sub_window.read() #ここでサブウィンドウが入力待ち状態になる
        if sub_event is None:
            break

	    #keyの文字列を判定しイベント処理を分岐させる
        elif sub_event == '-HOWTO_RG-':   #ランジについてのウィンドウを開くコマンド
            RG_window()

        elif sub_event == '-HOWTO_PK-': #プランクについてのウィンドウを開くコマンド
            PK_window()
                      
        elif sub_event == '-HOWTO_WS-': #ワイドスクワットについてのウィンドウを開くコマンド
            WS_window()

        elif sub_event == '-HOWTO_SS-': #スワイショウについてのウィンドウを開くコマンド
            SS_window()

        elif sub_event == '-HOWTO_NE-': #ニートゥエルボーについてのウィンドウを開くコマンド
            NE_window()

という風に書き分けた

さきほどのNE_window()の関数に
レイアウトとウィンドウオブジェクトの生成を書いた。

一応関数の中身も記載しておく

def NE_window():
    pass
    sg.theme('Tan')  #ニートゥエルボーウィンドウのテーマ
    sub6_layout = [     [sg.Text('サブ6窓のテスト', font=14)],
                        [sg.Text('いろいろ出来てきたぞい3', font=14)]
                     ]

    #ニートゥエルボーウィンドウオブジェクトの生成
    sub6_window = sg.Window("ニートゥエルボーのやり方について", layout = sub6_layout, size=(600,350))

    while True:
                    sub6_events, sub6_value = sub6_window.read() #ここでサブ6ウィンドウが入力待ち状態になる
                    if sub6_events is None:
                        break
                    sub6_window.close() #スワイショウのやり方についてのウィンドウを閉じる

それぞれの実際のウィンドウはこんな感じになる

f:id:ryotank:20210810185727p:plain
レーニング方法の窓

から

ランジ窓

f:id:ryotank:20210810185815p:plain
ランジ窓

プランク

f:id:ryotank:20210810185922p:plain
プランク

ワイドスクワット窓

f:id:ryotank:20210810190014p:plain
ワイドスクワット窓

スワイショウ

f:id:ryotank:20210810190043p:plain
スワイショウ

ニートゥエルボー窓

f:id:ryotank:20210810190111p:plain
ニートゥエルボー窓

これで複窓の実装に成功したので
次回からはボタンをクリックした時の動作を実装していく