ryotankの備考録日記

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

回路草案入力フォームその13

フォームのイメージ図通りに作り込んだ

回路草案作成フォームTab切り替えフォーム1実際の画面キャプチャ
回路草案作成フォームTab切り替えフォーム2実際の画面キャプチャ
回路草案作成フォームTab切り替えフォーム3実際の画面キャプチャ

このように出来たので、
先に、クリアボタンの実装を試す

クリアボタンの実装は以下の通り記述する

elif event == '-CLEAR-': #フォーム1のクリアボタンが押されたら
        window['cad_name'].update("")  #回路cad名をカラにする
        window['purpose'].update("")  #作成目的をカラにする

フォームの全体コードは以下のようになる

#回路草案作成フォームGUI動作確認

#2022-4-22作成
#Tabの切り替えで作成フォームを切り替える


from PySimpleGUI import TITLE_LOCATION_TOP, InputText
import PySimpleGUI as sg

sg.theme('DarkBlue5')

#分類分けフレーム
L1 =[
        [sg.Radio('モジュール基板', group_id='g1', font=('小塚ゴシック', 15))],
        [sg.Radio('試作基板', group_id='g1', font=('小塚ゴシック', 15))],
        [sg.Radio('ホビー用基板', group_id='g1', default=True, font=('小塚ゴシック', 15))],
        [sg.Radio('実験基板', group_id='g1', font=('小塚ゴシック', 15))],
        [sg.Radio('書き込みアダプター', group_id='g1', font=('小塚ゴシック', 15))]
]

tab1_layout = [
        [sg.T('')],
        [sg.Text('各項目を入力して下さい')],
        [sg.Text('回路CADの名前'), sg.Input(size=(20,1), key='cad_name'), 
        sg.Text('CADのverも忘れずに記入しよう', text_color='red')],
        [sg.Text('作成目的'), sg.Input(size=(20,1), key='purpose')],
        [sg.Frame('分類分け', L1, title_color='Green', font=('小塚ゴシック', 20), 
        title_location=TITLE_LOCATION_TOP, pad=((150,0),(15,35)), border_width=4)], #3行目
        [sg.Button('一時保存', key='-SAVE-'), sg.T(' '*30), sg.Button('クリア', key='-CLEAR-')]
]

tab2_layout = [
        [sg.T('')],
        [sg.Text('基板名'), sg.Input(size=(30,1), key='Board_name'), sg.Text('通称でも可')],
        [sg.Text('基板英名'), sg.Input(size=(49,1), key='Board_eng_name'), sg.Text('英名は回路CADで英字必須の為', text_color='red')],
        [sg.Text('電源供給方法'), sg.Multiline(size=(40,3), key='Power_supply_method')],
        [sg.Text('電源電圧'), sg.Input(size=(10,1), key='Power-supply_voltage'), sg.Text('[V]')],
        [sg.Text('基板概要'), sg.Input(size=(20,1), key='Board_outline')],
        [sg.Text('基板の大きさ'), sg.Text('横'), sg.Input(size=(10,1), key='Horizontal_size'), sg.Text('mm'),
        sg.Text('縦'), sg.Input(size=(10,1), key='Vertical_size'), sg.Text('mm')],
        [sg.Text('部品候補名A'), sg.Input(size=(15,1), key='Part_candidate_name_A')],
        [sg.Text('部品候補名B'), sg.Input(size=(15,1), key='Part_candidate_name_B')],
        [sg.Text('部品候補名C'), sg.Input(size=(15,1), key='Part_candidate_name_C')],
        [sg.Text('部品候補名D'), sg.Input(size=(15,1), key='Part_candidate_name_D')],
        [sg.Text('部品候補名E'), sg.Input(size=(15,1), key='Part_candidate_name_E')],
        [sg.Text('部品候補名F'), sg.Input(size=(15,1), key='Part_candidate_name_F')],
        [sg.Text('部品候補名G'), sg.Input(size=(15,1), key='Part_candidate_name_G')],
        [sg.T('')],
        [sg.Button('一時保存', key='-SAVE2-'), sg.T(' '*30), sg.Button('クリア', key='-CLEAR2-')]
]

tab3_layout = [
    [sg.T(' ')],
    [sg.Text('大まかな予算金額'), sg.Input(size=(10,1), key='Rough_budget_amount'), sg.Text('円(税別)')],
    [sg.Radio('pdf形式で残す',group_id='g2', font=('小塚ゴシック', 15)), 
    sg.Radio('txt形式で残す', group_id='g2', font=('小塚ゴシック', 15))],
    [sg.Text('作成年月日(西暦で入力してね)')],
    [sg.Input(size=(15,1), key='Date_of_creation')],
    [sg.Button('一時保存', key='-SAVE3-'), sg.T(' '*30), sg.Button('クリア', key='-CLEAR3-'),
    sg.Button('出力する', key='-OUTPUT-')]
]

layout =[
    [sg.TabGroup([[sg.Tab('作成フォーム1', tab1_layout), sg.Tab('作成フォーム2', tab2_layout),
    sg.Tab('作成フォーム3', tab3_layout)]])]
]

window = sg.Window('回路草案作成フォーム', layout, default_element_size=(20,1), size=(700,550))

while True:

    event, values = window.read()

    if event in None:
        break

    elif event == '-CLEAR-': #フォーム1のクリアボタンが押されたら
        window['cad_name'].update("")  #回路cad名をカラにする
        window['purpose'].update("")  #作成目的をカラにする

    elif event == '-CLEAR2-': #2のクリアボタンが押されたら
        window['Board_name'].update("")  #基板名をカラにする
        window['Board__eng_name'].update("")  #基板英名をカラにする
        window['Power_supply_method'].update("")  #電源供給方法をカラにする
        window['Power-supply_voltage'].update("")  #電源電圧をカラにする
        window['Board_outline'].update("")  #基板概要をカラにする
        window['Horizontal_size'].update("")  #横の大きさをカラにする
        window['Vertical_size'].update("")  #縦の大きさをカラにする
        window['Part_candidate_name_A'].update("")  #部品候補名Aをカラにする
        window['Part_candidate_name_B'].update("")  #部品候補名Bをカラにする
        window['Part_candidate_name_C'].update("")  #部品候補名Cをカラにする
        window['Part_candidate_name_D'].update("")  #部品候補名Dをカラにする
        window['Part_candidate_name_E'].update("")  #部品候補名Eをカラにする
        window['Part_candidate_name_F'].update("")  #部品候補名Fをカラにする
        window['Part_candidate_name_G'].update("")  #部品候補名Gをカラにする

    elif event == '-CLEAR3-': #3のクリアボタンが押されたら
        window['Rough_budget_amount'].update("")  #大まかな予算金額をカラにする
        window['Date_of_creation'].update("")  #作成年月日をカラにする


window.close()

次回は、joblibの使い方について勉強する