LoginSignup
0
0

PySimpleGUIでボタン一つでファイルの取得

Last updated at Posted at 2023-05-20

やりたいこと

PysimpleGUIでファイル/フォルダなどを取得したい。(ボタン1つで)

1.ポップアップで取得する

公式のドキュメントはこちら

これを見るのが一番早いと思います。ここでは特に重要なものを紹介します。

ファイルを1つ取得

import PySimpleGUI as sg
value = sg.popup_get_file('ファイルを選択してください!')
print(value)

実行結果
スクリーンショット 2024-03-09 013257.png

Browseを押すとファイルダイアログが開きます。
Okを押すとテキストボックスの入力値が、Cancelを押すとNoneが帰ってきます。
「Browse」「Ok」「Cancel」などを日本語にはできないようですね。

ファイルを複数取得

import PySimpleGUI as sg
value = sg.popup_get_file('ファイルを選択してください', multiple_files=True)
print(value)

multiple_files=Trueを追加すれば、ファイルを複数選択できるようになります。
Okを押すと、選択したファイルが;区切りで返ってきます。

ファイルの拡張子を指定

value = sg.popup_get_file('ファイルを選択してください',
                          file_types=(('Text Files', '.txt'),('すべてのファイル', '.*')))
print(value)

file_types=((typeの名前,.拡張子名),) のように、tuple区切りで指定します。
サンプルコードは拡張子が.txtのファイルか、すべてのファイルを取得できるようにしたものです。
スクリーンショット 2024-03-09 021754.png

macだとこの機能がうまく働かないようですので注意してください。

フォルダを取得

popup_get_filepopup_get_folderに変えるだけです。(multiple_filesやfile_typesは使えません)

2.FilesBrowseやFolderBrowseを使う

公式のドキュメントはこちら

import PySimpleGUI as sg

layout = [
    [sg.Text('ファイルを選択して下さい')],
    [sg.InputText(),sg.FileBrowse('開く', key='filebtn')],
    [sg.Button('パスを表示', key='printbtn')]
]

win = sg.Window('ファイルの選択', layout)

while True:
    event,value = win.read()
    if event == 'printbtn':
        print(value['filebtn'])
    elif event == sg.WIN_CLOSED:
        break

win.close()

実行結果
スクリーンショット 2024-03-09 095515.png
開くをクリックするとファイルダイアログが開き、ファイルを選択すると、 InputText の領域にファイル名が表示されます。
パスを表示をクリックするとファイル名が出力されます。

ファイルを複数取得可にしたい場合はFileBrowseFilesBrowseにします。
フォルダを取得したい場合はFolderBrowseにします。

ボタン一つでやりたい

InputTextをなくして、かつファイルを選択したときに(パスを表示を押さなくても)自動でパスが出力されるようにしたい。

import PySimpleGUI as sg

layout = [
    [sg.Text('ファイルを選択して下さい')],
    [sg.FileBrowse('開く', key='filebtn', enable_events=True)]
]

win = sg.Window('ファイルの選択', layout)

while True:
    event,value = win.read()
    if event == 'filebtn':
        print(value['filebtn'])
    elif event == sg.WIN_CLOSED:
        break

win.close()

実行結果
スクリーンショット 2024-03-09 103051.png

InputTextは、別になくてもかまわないので普通になくす。
また、FileBrowseenable_events=Trueを追加し、eventで検出できるようにする。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0