ryotankの備考録日記

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

基板作りチェックリストその33

フォームで入力した項目を変数に格納するその1

その1:基板名入力フォームで入力した基板名を変数に格納し
それを通知するもの


"""フォームで入力された項目(基板の名前の項目のみ)を変数に格納し
格納した値をpopupで通知する

作成年月日:2022-6-1

動作確認日:2022-6-6

その2はリスト作成日(数字のみ)を変数に格納し、それをpopupで通知する
"""

import PySimpleGUI as sg

sg.theme('LightBlue2')

# ------ Menu Definition ------ #
menu_def = [    ['&ファイル', ['&開く     Ctrl-O', '&保存       Ctrl-S', '&Properties', '&閉じる']],
                ['編集', ['&印刷プレビュー', '&印刷', ], ],
                ['&Toolbar', ['---', 'Command &1', 'Command &2',
                            '---', 'Command &3', 'Command &4']],
                ['&ヘルプ', ['&オフライン対応ヘルプ', '&ReadMe','---', '&About...']],]

#L6:実装済み基板の外観検査
L6 = [      [sg.Checkbox('半田がついてなかったりボール状の半田になっていないか', font='メイリオ 14', 
default=False, enable_events=True,)],
            [sg.Checkbox('半田は富士山の形状をしているか', font='メイリオ 15', default=False, 
            enable_events=True)],
            [sg.Checkbox('DIPの挿入ミスで端子が曲がっていないか', font='メイリオ 15', default=False, 
            enable_events=True)],
            [sg.Checkbox('ICが逆に実装されていないか', font='メイリオ 15', default=False, 
            enable_events=True)],
            
            [sg.Checkbox('すべての電源ICの入出力とGND間はショート(短絡)していないか', font='メイリオ 15', 
            default=False, enable_events=True)],
            [sg.Checkbox('電源投入後、熱くなったり臭いを放ったりする部品は無いか', font='メイリオ 15', 
            default=False, enable_events=True)]  
    ]


#L7:電源投入と基本動作判定
L7 =  [     [sg.Checkbox('安定化電源に電流リミッタをかけてあるか', font='メイリオ 15', 
            default=False, enable_events=True),],
            [sg.Checkbox('5Vや3Vの電源バスの電圧が狙い通りか', font='メイリオ 15',
            default=False, enable_events=True)]
            
    ]


# ------ GUI Defintion ------ #
L = [      
        [sg.Column([
            [sg.T(''*10)],
            [sg.Menu(menu_def, tearoff=False, pad=(200, 1))],
    
            [sg.Frame('6.実装済み基板の外観検査', L6, font='メイリオ 20')],
            [sg.T(' '*60)],
            [sg.Frame('7.電源投入と基本動作', L7, font='メイリオ 18')],

            [sg.Output(size=(70, 12),font='小塚ゴシック 16')]],  #Menuボタンの確認用でOutputを配置している
                scrollable=True, vertical_scroll_only=True)],
                
            [sg.T(' '*20), sg.Button('一時保存',key='-TempSAVE-', font='小塚ゴシック 16', 
            bind_return_key= True, size=(10,2)),
            sg.T(' '*25), sg.Button('すべて解除', key='-CLEAR-', 
            bind_return_key= True, font='小塚ゴシック 16', size=(10,2)),
            sg.T(' '*40), sg.Button('基板名\n入力フォーム',
            key='-BOARDinput-form-', font='小塚ゴシック 16',size=(10,2) , button_color='Green')],
            [sg.T(' '*10), sg.Button('PDF出力', key='OUTPUT', font='小塚ゴシック 16', 
            size=(10,2), button_color='red')]
    ]


window = sg.Window('基板作りチェック入力項目を変数に格納その1', L, )

#イベントループ
while True:
    main_event, value= window.read()  #イベントの読み取り(イベント待ち)
    if main_event in (sg.WIN_CLOSED, '閉じる'):
            break
    print(main_event, value)  #Menuボタンの確認用で配置している

    if main_event == '-BOARDinput-form-':    #基板名入力フォームボタンが押されたら
        #サブ画面を開く時に毎回layoutを宣言する
        #エラーが発生せず、何度でも展開できる
        sg.theme('LightGray6') #テーマの設定
        sub_layout = [
            [sg.Text('基板名 入力欄', font=14), sg.T(' ' *10), sg.Input(key='-BOARD_NAME-')],
            [sg.T('')],
            [sg.Text('リスト作成日 入力欄',  font=14), sg.Input(key='-LIST_DATE-')],
            [sg.T('')],
            [sg.T(' '*20), sg.Button('記入', font=16, key='-Data_ENTER-')],
            [sg.Button('読み取る', font=16, key='-get-')],
            [sg.Text(size=(30,1), key='-Form_OUT-')]
        ]

        sub_window = sg.Window('基板名入力フォーム (1/2)', layout= sub_layout)

        while True:
            sub_event, sub_value = sub_window.read()

            if sub_event is None:
                break


            elif sub_event =='-get-':
                BN_input = sub_value['-BOARD_NAME-'] +"が入力されました"
                sg.popup(BN_input)


sub_window.close()  #入力フォームを閉じる

#終了処理
window.close()

という感じになった

sg.popupでフォームで入力した基板名を通知した

基板作りチェックリスト入力項目を変数に格納その1実際の動作

次回は、リスト作成年月日を変数に格納したその2を作成する