コンボでフォルダを登録開く

投稿者: | 2023-04-06
import PySimpleGUI as sg
import subprocess

"""
コンボでフォルダを登録開く
"""

DESKTOP = r"C:\Users\yoshi\Desktop"


layout = [[sg.Combo(sorted(sg.user_settings_get_entry('-folder_path-', [])), default_value=sg.user_settings_get_entry('-last_folder_path-', ''), size=(50, 1), key='-FOLDER_PATH-', expand_x=True), 
           sg.FolderBrowse('Select', initial_folder=DESKTOP), sg.B('Open')],
          [sg.Button('登録', bind_return_key=True),  sg.Button('Cancel'), sg.Button('Settings')]]

window = sg.Window('Filename Chooser With History', layout, resizable=True, keep_on_top=True)

while True:
    event, values = window.read()

    if event in (sg.WIN_CLOSED, 'Cancel'):
        break
    if event == '登録':
        # If OK, then need to add the filename to the list of files and also set as the last used filename
        sg.user_settings_set_entry('-folder_path-', list(set(sg.user_settings_get_entry('-folder_path-', []) + [values['-FOLDER_PATH-'], ])))
        sg.user_settings_set_entry('-last_folder_path-', values['-FOLDER_PATH-'])
        print(values['-FOLDER_PATH-'])
    # elif event == 'Clear History':
    #     sg.user_settings_set_entry('-folder_path-', [])
    #     sg.user_settings_set_entry('-last_folder_path-', '')
    #     window['-FOLDER_PATH-'].update(values=[], value='')
    elif event == 'Open':
        folder_path = values['-FOLDER_PATH-'].replace('/', '\\')
        subprocess.run(['explorer', folder_path])
    # 設定ファイル(json)を開く(日本語文字化けしている)
    elif event == 'Settings':
        settings_path = sg.user_settings_filename()
        subprocess.run(['explorer', settings_path])
        print(settings_path)

window.close()
カテゴリー: GUI