ryotankの備考録日記

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

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

画像を読み込めるようにsg.Imageを使って再現するので
早速コードを書いてみた

"""
実施せずというチェックボタンを付ける
チェックボタンをチェックしたらそれぞれ該当する項目に「実施せず」と記入する

アプリが完成したら専用アイコンを作り載せる事
複窓実装2021年8月11日
Tab表示での画像表示2021年8月11日
"""


import PySimpleGUI as sg
import openpyxl  #Excelを操作する為のライブラリ

def RG_window():
    #実装したい処理を書く
    pass 
    #Tab(タイトル、レイアウト)   tabとtabgroupを設定するには、tabを生成してからtabGroupに設定する
    t4 = sg.Tab('やり方', [    [sg.Text('1.腰に両手をついて両足で立つ', font=20)], 
                            [sg.Text('2.足をゆっくり大きく前に踏み出す', font=20)],
                            [sg.Text('3.太ももが水平になるくらいに腰を深く下げる', font=20)],
                            [sg.Text('4.体を上げて踏み出した足をもとに戻す', font=20)]        ])

    t5 = sg.Tab('効果',   [   [sg.Text('バランス能力や筋力をつく', font=20)],
                            [sg.Text('1日の目安として5~10回を2から3セット',font=16)]   ])

    t6 = sg.Tab('参考体勢',  [ [sg.Image(filename='C:/Users/ryotank-GGH/Desktop/Pythonプログラム関連/減量管理GUI/ランジ.png')]])


    #TabGroupにtabを設定する
    sub2_layout = [   [sg.TabGroup([[t4, t5, t6]]) ]]

	#ランジウィンドウオブジェクトの生成
    sub2_window = sg.Window("ランジのやり方について", layout = sub2_layout, size=(570,480))
    while True:
                sub2_events, sub2_value = sub2_window.read() #ここでサブ2ウィンドウが入力待ち状態になる
                if sub2_events is None:
                        break
                sub2_window.close() #ランジのやり方についてのウィンドウを閉じる


def PK_window():
    pass
    sg.theme('DarkTeal4')  #プランクウィンドウのテーマ
    
    #Tab(タイトル、レイアウト)   tabとtabgroupを設定するには、tabを生成してからtabGroupに設定する
    t1 = sg.Tab('やり方', [    [sg.Text('1.うつ伏せの状態で両肘と足のつま先をつける', font=20)], 
                            [sg.Text('2.足からつま先まで真っ直ぐにし、曲がらない様に注意', font=20)],
                            [sg.Text('3.', font=20)]   ] )

    t2 = sg.Tab('効果',     [  [sg.Text('腹直筋だけでなく、クビレ部分の筋肉や背中、腕の筋肉も鍛えられる', font=20)]    ])

    t3 = sg.Tab('参考体勢',  [  [sg.Image(filename='C:/Users/ryotank-GGH/Desktop/Pythonプログラム関連/減量管理GUI/plank1.png')]])

    #TabGroupにtabを設定する
    sub3_layout = [   [sg.TabGroup([[t1, t2, t3]])]  ]    

    #プランクウィンドウオブジェクトの生成
    sub3_window = sg.Window("プランクのやり方について", layout = sub3_layout, size=(570,400))

    while True:
                sub3_event, sub3_value= sub3_window.read() #ここでサブ3ウィンドウが入力待ち状態になる
                if sub3_event is None:
                        break
                sub3_window.close() #プランクのやり方についてのウィンドウを閉じる


def WS_window():
    pass
    sg.theme('Python')  #ワイドスクワットウィンドウのテーマ
    #Tab(タイトル、レイアウト)   tabとtabgroupを設定するには、tabを生成してからtabGroupに設定する
    t4 = sg.Tab('やり方', [     [sg.Text('1.足を肩幅より広めに広げる', font=20)], 
                            [sg.Text('2.つま先を45度外側に向けて立つ', font=20)],
                            [sg.Text('3.息を吸いながら、太ももが床と平行になるまで上体を下げる', font=20)]   ] )

    t5 = sg.Tab('効果',     [  [sg.Text('基礎代謝が上がり痩せやすく太りにくい体質に', font=20)],
                            [sg.Text('安定感をキープするのが難しいため、バランス感覚が養える')]    ])

    t6 = sg.Tab('参考体勢',  [  [sg.Image(filename='C:/Users/ryotank-GGH/Desktop/Pythonプログラム関連/減量管理GUI/スクワット説明.png')]])

    #TabGroupにtabを設定する
    sub4_layout = [   [sg.TabGroup([[t4, t5, t6]]) ]]  
    #ワイドスクワットウィンドウオブジェクトの生成
    sub4_window = sg.Window("ワイドスクワットのやり方について", layout = sub4_layout, size=(570,400))

    while True:
                sub4_events, sub4_value= sub4_window.read() #ここでサブ4ウィンドウが入力待ち状態になる
                if sub4_events is None:
                        break
                sub4_window.close() #ワイドスクワットのやり方についてのウィンドウを閉じる


def SS_window():
    pass
    sg.theme('Reds')  #スワイショウウィンドウのテーマ
    #Tab(タイトル、レイアウト)   tabとtabgroupを設定するには、tabを生成してからtabGroupに設定する
    t7 = sg.Tab('やり方', [     [sg.Text('1.両足を肩幅くらいに開き、膝を軽く曲げて立つ', font=20)], 
                                [sg.Text('2.腰を中心に手を振っていく', font=20)],
                                [sg.Text('3.腰を軸にして肩や腕の力を抜き、ひねりに合わせ左右に自然に振る', font=20)]   ] )

    t8 = sg.Tab('効果',   [     [sg.Text('誰でもできる運動で疲れた時に便利', font=20)]    ])

    t9 = sg.Tab('参考体勢',  [  [sg.Image(filename='C:/Users/ryotank-GGH/Desktop/Pythonプログラム関連/減量管理GUI/スワイショウ.png')]])

    #TabGroupにtabを設定する
    sub5_layout = [   [sg.TabGroup([[t7, t8, t9]]) ]]

    #スワイショウウィンドウオブジェクトの生成
    sub5_window = sg.Window("スワイショウのやり方について", layout = sub5_layout, size=(570,400))

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


def NE_window():
    pass
    sg.theme('Tan')  #ニートゥエルボーウィンドウのテーマ
    #Tab(タイトル、レイアウト)   tabとtabgroupを設定するには、tabを生成してからtabGroupに設定する
    t10 = sg.Tab('やり方', [      
                            [sg.Text('1.うつ伏せの状態で両肘と足のつま先をつける', font=20)], 
                            [sg.Text('2.足からつま先まで真っ直ぐにし、曲がらない様に注意', font=20)],
                            [sg.Text('3.', font=20)]   ] )

    t11 = sg.Tab('効果',   [   [sg.Text('腹直筋だけでなく、クビレ部分の筋肉や背中、腕の筋肉も鍛えられる', font=20)]    ])

    t12 = sg.Tab('参考体勢',[   [sg.Image(filename='C:/Users/ryotank-GGH/Desktop/Pythonプログラム関連/減量管理GUI/ニートゥエルボー説明.png')]])

    #TabGroupにtabを設定する
    sub6_layout = [   [sg.TabGroup([[t10, t11, t12]]) ]]

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

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



main_layout = [ [sg.Text('日付を選択して下さい', font=20)],
                [sg.Input(key= '-INPUT-'), sg.CalendarButton('カレンダー入力', font=16, target='-INPUT-')],
                # カレンダーの返り値を収納する先をtarget引数で指定

                [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=(650,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-': #ランジについてのウィンドウを開くコマンド
                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()

        sub_window.close()  #トレーニング方法のウィンドウを閉じる

main_window.close()  #メインウインドウを閉じる

こんな感じになったが、画像を読み込んでくれない・・

しばらくは検証しないと・・・

読み込みが完成すれば
片足立ちを1分間行う方法と画像を運動の項目に追加する