コンテンツへスキップ

GUI画面の作成

Pythonには標準でtkinterというGUI作成モジュールがありますが、少し複雑な画面はPySimpleGUIの方が使い勝手がよいです。

import PySimpleGUI as sg

# テーマ(色合い)の設定
sg.theme('SystemDefault')

# 選択画面レイアウト
layout_select = [
    [sg.Text('ユーザーを選択してください')], 
    [sg.Listbox(choices, size=(30, len(choices)), key='-USER-')],
    [sg.Button('選択'), sg.Button('削除')],
    ]

# ユーザー選択画面表示
window = sg.Window('ユーザー選択', layout_select, font=('Meiryo UI', 12))
while True:
    # イベント読み取り
    event, values = window.read()
    # ウィンドウ右上の×を押したとき
    if event == sg.WIN_CLOSED:
        break
    # 選択ボタンを押したとき
    if event == '選択':
        # リストから選択されているとき
        if values['-USER-']:
            # 選択されたユーザー取得
            selected_user = values['-USER-'][0]
            if selected_user != '新規ユーザー':
                # パスワード取得
                user_pass = df_users.query('username == @selected_user')['password'].iloc[-1]
                print('Success: retrieved password')
            break
    # 削除ボタンを押したとき
    if event == '削除':
        # リストから選択されているとき
        if values['-USER-']:
            # 選択されたユーザー取得
            selected_user = values['-USER-'][0]
            if selected_user == '新規ユーザー':
                selected_user = ''
            else:
                choices.remove(selected_user) # 選択肢からselected_userを削除する
                df_users = df_users[~df_users['username'].str.contains(selected_user)]  # 社員一覧からも削除する
                window['-USER-'].update(values=choices)  # 選択肢の表示を更新する
                selected_user = ''
window.close()