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()