ryotankの備考録日記

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

アリンコス部品管理その16

表示画面1動作確認その2を試す
tabの切り替え実装をつけた

#表示画面1動作確認その2は、tabの切り替え実装
#入力1から表示1までの切り替え確認

#数量、引き出し日、分類、販売コードの下の入力項目は、本来ならデータベースから引っ張り出した各値だが
#表示する位置の確認としてsg.Inputを入れた

import PySimpleGUI as sg

#入力フォーム1
sg.theme('LightBlue5')
tab1_layout =[
    [sg.Text('【入力画面1】', font=('小塚ゴシック', 26))],   #2行目
    [sg.T(' '*20)],  #画面を見やすくする為の空白エリア
    [sg.Text('分類', font=('小塚ゴシック', 16)), sg.Input(size=(20,2), key='-Class-'), sg.T(' '*20),
     sg.Text('型番(品番)', font=('小塚ゴシック', 16)),sg.Input(size=(20,2), key='-Model_number-')],     #3行目

    [sg.Text('製品名', font=('小塚ゴシック', 16)), sg.Input(size=(20,2), key='-Product_name-'), 
     sg.Text('メーカー名', font=('小塚ゴシック', 16)), sg.Input(size=(20,2), key='-Manufacture_name-')],   #4行目
    [sg.T(' '*20)],  #画面を見やすくする為の空白エリア
    [sg.Text('購入先', font=('小塚ゴシック', 16)), sg.Input(size=(20,2), key='-Retailer-'),
     sg.Text('販売コード', font=('小塚ゴシック', 16)), sg.Input(size=(20,2), key='-Sales_code-')],   #5行目
    [sg.T(' '*20)],  #画面を見やすくする為の空白エリア
    [sg.Button('DBへ登録', key='-DB1-'), sg.T(), sg.T(' '*50), sg.Button('クリア', key='-Clear1-')]  #6行目
]

#入力フォーム2
tab2_layout =[
    [sg.Text('【入力画面2】', font=('小塚ゴシック', 26))],   #2行目
    [sg.Text('価格', font=('小塚ゴシック', 16)), sg.T(' '*20),
     sg.Text('パッケージ名', font=('小塚ゴシック', 16)), sg.T(' '*30), sg.Text('所持個数', font=('小塚ゴシック', 16)), sg.Text('')],     #3行目
    [sg.Input(size=(10,2), key='-price-'), sg.Text('円', font=('小塚ゴシック', 16)), sg.T(' '*20),
     sg.Input(size=(20,2), key='-package_name-'), sg.T(' '*20), sg.Input(size=(10,2), key='-Number_of_possessions-'),
     sg.Text('個', font=('小塚ゴシック', 16))],   #4行目
    [sg.T(' '*20)],  #画面を見やすくする為の空白エリア
    [sg.T(' '*50), sg.Text('備考', font=('小塚ゴシック', 16))],     #5行目
    [sg.Multiline(size=(60,8), key='-remarks-')],    #6行目
    [sg.T(' '*20)],  #画面を見やすくする為の空白エリア
    [sg.Button('DBへ登録', key='-DB1-'), sg.T(), sg.T(' '*50), sg.Button('クリア', key='-Clear1-')]  #7行目
]

#入力フォーム3
tab3_layout =[
 [sg.Text('【入力画面3】', font=('小塚ゴシック', 26))],   #2行目
    [sg.T(' '*20)],  #画面を見やすくする為の空白エリア
    [sg.Text('消費した時のみ入力する事!', font=('小塚ゴシック', 16))],     #3行目
    [sg.T(' '*20)],  #画面を見やすくする為の空白エリア
    [sg.Text('消費個数', font=('小塚ゴシック', 16)), sg.T(' '*50),
     sg.Text('消費した日付', font=('小塚ゴシック', 16)) ],   #4行目
    [sg.Input(size=(10,2), key='-Number_of_pieces_consumed-'), sg.T(' '*60), sg.Input(size=(15,2), key='-Date_consumed-')],     #5行目
    [sg.T(' '*20)],  #画面を見やすくする為の空白エリア
    [sg.Text('消費理由', font=('小塚ゴシック', 16)), sg.T(' '*110), sg.Text('どのような基板で使われているか',font=('小塚ゴシック', 16))],    #6行目
    [sg.Multiline(size=(45,8), key='-Reason_for_consump-'), sg.T(' '*60), sg.Multiline(size=(55,8), key='-Reason_for_consumption-')],     #7行目
    [sg.T(' '*20)],  #画面を見やすくする為の空白エリア
    [sg.Button('DBへ登録', key='-DB3-'), sg.T(' '*50), sg.Button('クリア', key='-Clear3-')]  #8行目
]

#表示画面1
tab4_layout =[
    [sg.Text('【表示画面1】',font=('小塚ゴシック', 26))],  #2行目
    [sg.T(' '*20)],  #画面を見やすくする為の空白エリア
    [sg.T(' '*40), sg.Text('部品名', font=('小塚ゴシック', 16))],   #3行目
    [sg.T(' '*20)],  #画面を見やすくする為の空白エリア
    [sg.T(' '*40), sg.Input(size=(20,2), key='-Parts_name-')],     #4行目
    [sg.Text('数量', font=('小塚ゴシック', 16)),  sg.T(' '*50),
     sg.Text('引き出し日', font=('小塚ゴシック', 16))], #5行目
    [sg.Input(size=(20,2), key='-quantity-'), sg.T(' '*50), sg.Input(size=(20,2), key='-Withdrawal_date-')],  #6行目 
    [sg.T(' '*20)],  #画面を見やすくする為の空白エリア
    [sg.Text('分類', font=('小塚ゴシック', 16)),  sg.T(' '*50),
     sg.Text('販売コード', font=('小塚ゴシック', 16))],   #7行目
    [sg.T(' '*20)],  #画面を見やすくする為の空白エリア
    [sg.Input(size=(20,2), key='-class-'), sg.T(' '*50), sg.Input(size=(20,2), key='-sales_code-')],  #8行目 
    [sg.T(' '*20)],  #画面を見やすくする為の空白エリア
    [sg.T(' '*50), sg.Button('検索', key='-search-')]  #9行目
]

#表示画面2
tab5_layout =[

]


main_layout = [
    [sg.TabGroup([[sg.Tab('入力1', tab1_layout), sg.Tab('入力2', tab2_layout),
     sg.Tab('入力3', tab3_layout), sg.Tab('表示1', tab4_layout), sg.Tab('表示2', tab5_layout)]])],  #1行目
    [sg.Quit()]
]

main_window = sg.Window('アリンコス部品管理 表示画面1動作確認その2tab切り替え実装', main_layout, size=(1000, 500))

while True:
    main_event, main_values = main_window.read()

    if main_event in (None, 'Quit'):  #×ボタンやQuitボタンを押すとウィンドウを閉じる
        break

main_window.close()

こんな感じに切り替わる

f:id:ryotank:20220322115232g:plain
表示画面1動作確認その2tab切り替え

次は、表示画面2動作確認その1
データベースから引き出し日、部品名、分類、消費個数を表にしたものを
表示画面2とする