3DCG屋さんの活動記録

PROFILE ★★こんな人です

映像制作会社でクリエイティブの修行中。日ごろはMaya&AEを中心にいろんなCGソフトを触りながら、TD寄りの作業が好きで、インタラクティブな体験型空間演出をやりたいと模索中。面白いこと新しいこと大好きな『素直』でいつづける

2022年2月22日火曜日

PySimpleGuiはじめました。  Python GUI のラッパー。


 UEへのAlembicバッチインポーターを作るに当たり、

PythonのGUIを作成したいってことで、

PyQtを考えてたけど、正直今まで使いこなせてなかったのと

将来性を考えて → PySimpleGuiを使ってみよう!



インストールからいろはこちらで



早速やりたいこと

・ファイルオープンダイアログ

・ファイルパスを複数リスト化

・各ファイルに応じた文字列(UEへのインポートフォルダ)の欄

・シンプルなボタン


以上。


Windowの可変は resizable=True

Widgetの可変は keyを事前に設定、windowsをfinalize、expand






https://pysimplegui.readthedocs.io/en/latest/#finalize-or-window-parameter-finalizetrue

https://novnote.com/pysimplegui-tips/617/#i-5




今日の成果・・・Tableにして、テキストボックスにして、、


あー!ListBoxじゃなくて編集できるようにTextBoxにしたい!

あー!読み込み先のパス表示できるようにTableにしたい!







# 元のファイル https://pysimplegui.trinket.io/demo-programs#/examples-for-reddit-posts/visual-basic-mockup

import PySimpleGUI as sg
from os.path import basename

#frame1 = [[sg.Radio('1ファイルにシートごとにまとめる', 1, key='-MULTI-SHEET-', default=True)],
#          [sg.Radio('1ファイル1シートにまとめる', 1, key='-ONE-SHEET-')]]


layout = [[sg.Text('Set Alembic Files', size=(15, 1), justification='left'),
          sg.InputText('enter file path', enable_events=True,key='-PATH-'),
          sg.FilesBrowse('Brows', size=(10,1),key='-FILES-', file_types=(('Alembic ファイル', '*.abc'),))],
          #[sg.Button('ログをコピー'), sg.Button('ログをクリア')],
          #[sg.Output(size=(100, 5), key='-MULTILINE-')],
          #[sg.Button('入力一覧をクリア')],
          [sg.Listbox([], size=(50, 2), enable_events=True, key='-LIST-')],
          [sg.Button('Import',key="key_btn_import")]
          ]

window = sg.Window('AbcBatchImport', layout,resizable=True,finalize=True)
#window["-PATH-"].expand(expand_x=True, expand_y=False)  # ウィンドウサイズに応じて入力エリアを可変に
window["-LIST-"].expand(expand_x=True, expand_y=True)  # ウィンドウサイズに応じて入力エリアを可変に

new_files = []
new_file_names = []

while True:             # Event Loop
    event, values = window.read()
    if event == sg.WIN_CLOSED:
        break
    elif event == 'key_btn_import':
        if values['-FILES-'] != '':
            print('FilesBrowse')

            # TODO:実運用には同一ファイルかどうかの処理が必要
            new_files.extend(values['-FILES-'].split(';'))
            new_file_names.extend([basename(file_path) for file_path in new_files])

            print('ファイルを追加')
            window['-LIST-'].update(new_file_names)  # リストボックスに表示します

   

window.close()

0 コメント:

コメントを投稿