D2MatE Top page

Launcherプログラミング

用語

基本

メインメニューの構成 (リストファイル)

デフォルトのリストファイル

Launcher.pyに引数を与えずに起動した場合、以下の順番で検索し、最初に見つかったリストファイルを読み込みます

  1. [tkprog_X_path]/config/Launcher にある [Group].list ファイル。
    [Group]は、[tkprog_X_path]の _ 以降の文字列です。例えば、tkprog_baseの場合は [Group] = 'base', tkprog_COEの場合は 'COE' になります。
  2. Launcher/script/default.list ファイル

起動時引数でのリストファイルの指定

Launcher.py の起動時に -s='リストファイルパス' を与えることで、任意のリストファイルを読み込めます。
リストファイルのパスは、Launcher/scripts からの相対パスか、絶対パスで与えます。

例: VASP/Launcher.pyの起動: python Launcher.py -s=VASP.list

リストファイルの書式

 リストファイルは2つのセクション ( [] で囲まれた行をセクションと呼びます) で構成されています。

リストファイルの例:

[extra_scripts]
extra/6-041-VASP.ini
extra/6-041b-VASP-Utils.ini
:extra/6-042-VASP-Obsolete.ini
extra/7-012-Crystal.ini

[remove_scripts]
1-001-Help-separator.ini
:5-011-Help.ini
5-012-Install.ini

スクリプトファイルの書式

Launcherウィンドウの右ペインにあるボタンで実行されるプログラム

プログラム言語

簡単なプログラム例

例1: 外部プログラムの起動 (フォアグラウンド実行/同期実行)

[Button1.app]
Caption=app
d:/a.exe
End

  説明: ボタンに  "app" と表示し、ボタンをクリックしたときに a:/a.exe を実行します。
      ただし、d:/a.exe はフォアグラウンドアプリとして同期的に実行されるので、
      a.exe を終了するまでLauncher.pyの操作はできません。

例2: 外部プログラムの起動 (バックグラウンド実行/非同期実行)

[Button1.app]
Caption=app
$(start) d:/a.exe
End

  説明: $(start) コマンドから実行することで、d:/a.exe をバックグラウンドで非同期実行できます。
      $(start) 実行直後から、Launcher.pyの操作が可能です。

例3: ファイルを選択し、そのパスをpythonプログラムに渡して非同期実行

[Button1.app]
Caption=app
get_open_file_name "*.xlsx" "." "データファイル(.xlsx)を選択してください"
set file_path=$o
$(start) "$(python_path)" hogehoge.py "$(file_path)"
End

  説明: ファイル選択ダイアログを表示し、選択したファイルのパスが 変数 $o に入ります。
      $o は他のコマンドで再利用される可能性があるため、 set コマンドで 変数 $(file_path) に $o の値を設定しています。
      pythonプログラムを実行する場合、$(python_path) 変数には python ver3のパスが入っています。
     パス名には空白が入っている可能性があるので、"" で囲います。

     

例4: 入力ダイアログの利用

[Button1.app]
Caption=app

set opt=hogehoge

$(start) "$(python_path)" hogehoge.py "$(opt)"

input opt hogehoge.py のパラメータを入力してください

End

  説明: input コマンドで、$(opt) 変数の内容を初期値としてテキストボックスのあるダイアログを表示します。
      OKボタンを押すと、テキストボックスの内容が $(opt) 変数に代入され、次の行を実行します。
      Cancelボタンを押すと、スクリプトを終了します

         

例5: ユーザ定義ダイアログの利用

[Button1.app]
Caption=app
set_if_null method method=linear

new_dialog

add_dialog label label1 "text=アルゴリズム:"
add_dialog listbox\
    method\
    width=50\
    height=5\
    relief=groove\
    "def_val=$(method)"\
    "linear"\
    "gpr"\
    "label_tail="

custom_dialog "dialog test"

$(start) "$(python_path)" hogehoge.py $(method)

End

  説明: Launcher.pyの変数は、使用する前に初期化されている必要があります。
      ここでは、
        set_if_null method method=linear
      により、method変数が未定義あるいは空白の場合、method=linear の代入を行い、method変数を初期化しています。
      new_dialogで、ダイアログの作成を開始します。
      add_dialogで、ダイアログの要素を追加していきます。
      add_dialog labelで、ダイアログの最初に "アルゴリズム" という行を表示します。
      add_dialog listboxで、アルゴリズムを "linear", "gpr" から選択するリストボックスを表示します。
      リストボックスの選択結果は $(method) 変数に入ります。
      custm_dialogコマンドによって、タイトルが "dialog test"で、OKとCancelボタンのあるダイアログが表示されます。
      OKボタンを押すと、custom_dialog以降が実行されます。
      Cancelボタンを押すと、custom_dialog以降は実行されず、スクリプトを終了します

     

例6: 複雑なダイアログの例

スクリプトは示しませんが、タブでページを切り替え、順次ボタンを押してタスクを実行するダイアログも作れます。