見出し画像

PySimpleGUI ファイル選択

# プログラム

sg.InputTextsg.FileBrowse を横に並べるだけで可能。 ​

import PySimpleGUI as sg

layout = [
   [sg.Text("ファイル"), sg.InputText(), sg.FileBrowse(key="file1")],
   [sg.Submit(), sg.Cancel()],
]

window = sg.Window("ファイル選択", layout)

event, values = window.read()
window.close()
print(values)

上記は、選択したファイルのパスを取得するプログラム。詳しい解説は挙動説明の後。

# 実行時の挙動について

実行すると最初は以下のような画面が現れる。

画像1

Browse ボタンを押すとファイルダイアログが開く(画像はWindows)

画像2

ファイルを選択すると、 InputText の領域にファイル名が表示される。

画像3

最後に Submit ボタンを押して取得したファイル名がprintされる。

{0: 'C:/Users/admin/test/hoge.txt',
'file1': 'C:/Users/admin/test/hoge.txt'}

# プログラムの解説

layout = [
   [sg.Text("ファイル"), sg.InputText(), sg.FileBrowse(key="file1")],
   [sg.Submit(), sg.Cancel()],
]

InputText と FileBrowse は、隣同士に配置するだけで、選択したファイル名が自動でInputTextに挿入される。

ちなみに、明示的に対応付けをしたいときには、以下のようにInputText のキーをFileBrowseのターゲットとして設定すること。

import PySimpleGUI as sg

layout = [
   [sg.Text("ファイル"), sg.InputText(key="input1")],
   [sg.FileBrowse(key="file1", target="input1"), sg.Submit(), sg.Cancel()],
]

window = sg.Window("ファイル選択", layout)

event, values = window.read()
window.close()
print(values)

最初のプログラム解説の続きに戻る。

window = sg.Window("ファイル選択", layout)

event, values = window.read()
window.close()
print(values)

window.read() の返り値eventは、どんなイベントが起こったか、valuesにはどんな値が入力されたかのデータが入る。

「ダイアログで選択したファイルのパスの文字列」を取得するには、FileBrowse() でkey を指定すると良い。values(辞書)のfile1キーの値として取得できる。printの結果の通り、自動で番号が付与されるけど、keyを指定したほうがわかりやすい。


参考にしたレシピはこちら

公式のドキュメント、デモプログラム等は以下です。

http://PySimpleGUI.org
http://calls.PySimpleGUI.org
http://Cookbook.PySimpleGUI.org
http://Demos.PySimpleGUI.org
http://Trinket.PySimpleGUI.org
http://YouTube.PySimpleGUI.org
http://PySimpleGUI.com

PySimpleGUIのおおまかな紹介(日本語)は以下のnoteに書いてます。


いいなと思ったら応援しよう!