tktkinter.py 技術ドキュメント

ライブラリの機能や目的

tktkinter.py は、Pythonの標準GUIライブラリである tkinter を拡張し、より機能豊富で使いやすいGUIコンポーネント、ダイアログ、およびユーティリティを提供することを目的としたライブラリです。特に、ファイル・フォルダ選択、外部アプリケーション実行、設定管理、および matplotlib を用いたグラフ描画キャンバスの統合といった一般的なGUIアプリケーションのニーズに対応します。

主な機能は以下の通りです。

  • GUIコンポーネントのラッパーと拡張: tkinter の標準ウィジェット(ボタン、エントリー、テキストエリア、チェックボックスなど)をラップし、追加機能(例: 右クリックメニュー、テキストの特殊表示)を提供します。

  • ファイル・パス操作UI: ファイル選択ダイアログ、フォルダ選択ダイアログ、ファイルパスの入力と管理、外部アプリケーションでのファイル編集・実行を容易にするコンポーネントを提供します。

  • ダイアログ: 情報表示、警告、エラー、確認(Yes/No、OK/Cancel、Retry/Cancel)、数値・文字列入力、リスト選択、カスタム設定といった多様なダイアログをサポートします。

  • matplotlib 連携: tkinter アプリケーション内に matplotlib のグラフを埋め込むためのキャンバスウィジェットを提供し、インタラクティブなデータ可視化を可能にします。

  • 設定管理と動的UI生成: アプリケーション設定値を管理し、設定ファイルから動的にGUIを生成する汎用的なカスタムダイアログ(tkCustomDialog_by_config)を提供します。これにより、複雑な設定画面も柔軟に構築できます。

  • 外部プロセス実行: システムシェルや指定された外部プログラムを実行するためのヘルパー関数を提供します。

このライブラリは、tkinter アプリケーションの開発を加速し、よりリッチなユーザーエクスペリエンスを提供するための基盤となります。

importする方法

tktkinter.py ライブラリを他のPythonプログラムからインポートするには、以下のいずれかの方法を使用します。

A. 全ての関数とクラスを直接インポートする場合:

from tktkinter import *

B. tktkinter モジュールとしてインポートし、プレフィックスを付けて使用する場合:

import tktkinter as ttk_ext
# 例: ttk_ext.Button(...)

通常は、必要な特定のコンポーネントやダイアログのみをインポートするか、上記Bの方法でモジュール全体をインポートして使用することが推奨されます。

必要な非標準ライブラリとインストール方法

tktkinter.py が動作するために必要となる非標準ライブラリは以下の通りです。

  1. matplotlib: グラフ描画機能を提供します。特に Canvas 関数が依存しています。

    • インストール方法:

      pip install matplotlib
      
  2. tklib パッケージ: tktkinter.py は、ローカルの tklib パッケージ(具体的には tklib.tkutilstklib.tkparams モジュール)に依存しています。

    • このパッケージは pip でインストールする一般的なライブラリではなく、tktkinter.py と同じプロジェクト内、またはPythonの検索パス上で利用可能である必要があります。通常、tktkinter.py と同じディレクトリ構造(例: tklib/tkutils.py など)で配置されていることを想定します。もし tklib が利用できない場合は、関連するエラーが発生します。

importできる変数と関数

このライブラリからインポートできる主要な変数と関数、クラスを以下に示します。多くの関数は、アプリケーションの状態を管理する app オブジェクトを最初の引数として受け取ります。app はカスタムのアプリケーションクラスのインスタンスを想定しています。


関数

  • set_variable_from_list(app, key, var)

    • 動作: app オブジェクトの tkvars 属性に指定された keyvar を設定します。これは、tkinter 変数と内部的なキーを関連付けるヘルパー関数として機能します。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • key: 変数を識別するための文字列キー。

      • var: tkinter の変数オブジェクト(例: tkinter.StringVar, tkinter.IntVar など)。

    • 戻り値: var(入力された tkinter 変数オブジェクト)。

  • execute_command(app, command, working_dir = None, is_print = False, files = [])

    • 動作: 指定されたコマンドをシステム上で実行します。コマンドライン引数として files を追加できます。working_dir が指定された場合、コマンド中の %(dir) はそのディレクトリに置換されます。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • command: 実行するコマンド文字列。角括弧 [] を使用して引数を指定できます。

      • working_dir (str, optional): コマンドを実行する作業ディレクトリ。デフォルトは None

      • is_print (bool, optional): 実行されるコマンドを標準出力に表示するかどうか。デフォルトは False

      • files (list, optional): コマンドに渡すファイルパスのリスト。デフォルトは []

    • 戻り値: os.system() の戻り値(通常はコマンドの終了コード)。

  • folder_button_click(app, entry_variable, ini_dir = '.', title = None, mustexist = True, entry_type = 'entry', entry_filemask = '*;*.*')

    • 動作: フォルダ選択ダイアログを表示し、ユーザーが選択したフォルダパスを指定された tkinter 変数に設定します。entry_type が 'combobox' の場合、選択したフォルダ内のファイルリストをコンボボックスの値として設定できます。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • entry_variable: 選択されたパスを設定するための tkinter 変数。

      • ini_dir (str, optional): ダイアログの初期表示ディレクトリ。デフォルトは .(カレントディレクトリ)。

      • title (str, optional): ダイアログのタイトル。デフォルトは None

      • mustexist (bool, optional): 選択されたフォルダが存在しなければならないか。デフォルトは True

      • entry_type (str, optional): 関連するエントリーウィジェットのタイプ('entry' または 'combobox')。デフォルトは 'entry'。

      • entry_filemask (str, optional): 'combobox' タイプで使用されるファイルマスク。デフォルトは '*;*.*'

    • 戻り値: なし。

  • path_button_click(app, entry_variable, ini_dir = '.', title = None, file_type = [("All", "*.*")], entry_type = 'entry', entry_filemask = '*;*.*', check_exist = True)

    • 動作: ファイル選択またはファイル保存ダイアログを表示し、ユーザーが選択したファイルパスを指定された tkinter 変数に設定します。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • entry_variable: 選択されたパスを設定するための tkinter 変数。

      • ini_dir (str, optional): ダイアログの初期表示ディレクトリ。デフォルトは .

      • title (str, optional): ダイアログのタイトル。デフォルトは None

      • file_type (list, optional): ファイルタイプフィルタのリスト(例: [("Text files", "*.txt"), ("All files", "*.*")])。デフォルトは [("All", "*.*")]

      • entry_type (str, optional): 関連するエントリーウィジェットのタイプ('entry' または 'combobox')。デフォルトは 'entry'。

      • entry_filemask (str, optional): 'combobox' タイプで使用されるファイルマスク。デフォルトは '*;*.*'

      • check_exist (bool, optional): ファイルの存在チェックを行うか(Trueでファイル選択、Falseでファイル保存ダイアログ)。デフォルトは True

    • 戻り値: なし。

  • edit_button_click(app, entry_variable, editor_path = None)

    • 動作: entry_variable に設定されているパスのファイルを、指定されたエディタまたはアプリケーションの設定エディタで開きます。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • entry_variable: 編集するファイルのパスを含む tkinter 変数。

      • editor_path (str, optional): 使用するエディタのパス。None の場合、app.get_editor() を使用します。デフォルトは None

    • 戻り値: なし。

  • shell_button_click(app, cmd = None)

    • 動作: システムのシェル(コマンドプロンプトなど)を開きます。cmd が指定された場合、そのコマンドをシェルで実行します。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • cmd (str, optional): シェルで実行するコマンド。デフォルトは None(単にシェルを開く)。

    • 戻り値: なし。

  • color_dialog(app = None, parent = None, title = None, color = None)

    • 動作: 色選択ダイアログを表示します。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • parent: ダイアログの親ウィジェット。

      • title: ダイアログのタイトル。

      • color: 初期選択色。

    • 戻り値: 選択された色(タプル形式: ((R, G, B), '#RRGGBB'))または None

  • font_dialog(app = None, parent = None, title = None, color = None)

    • 動作: フォント選択ダイアログを表示します(Tkの fontchooser コマンドを使用)。この機能はTk 8.6.13以降で完全にサポートされる予定です。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • parent: ダイアログの親ウィジェット。

      • title: ダイアログのタイトル。

      • color: 未使用の引数。

    • 戻り値: 選択されたフォントの仕様文字列または None

  • dialog_askfloat(app, title = 'Input float value', message = 'Input float value', initialvalue = None, minvalue = None, maxvalue = None)

    • 動作: 浮動小数点数値を入力するためのダイアログを表示します。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • title (str, optional): ダイアログのタイトル。デフォルトは 'Input float value'

      • message (str, optional): ダイアログに表示するメッセージ。デフォルトは 'Input float value'

      • initialvalue (float, optional): 初期値。デフォルトは None

      • minvalue (float, optional): 最小許容値。デフォルトは None

      • maxvalue (float, optional): 最大許容値。デフォルトは None

    • 戻り値: 入力された浮動小数点数値、またはキャンセルされた場合は None

  • askinteger(app, title = 'Input float value', message = 'Input float value', initialvalue = None, minvalue = None, maxvalue = None)

    • 動作: 整数値を入力するためのダイアログを表示します。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • title (str, optional): ダイアログのタイトル。デフォルトは 'Input float value'

      • message (str, optional): ダイアログに表示するメッセージ。デフォルトは 'Input float value'

      • initialvalue (int, optional): 初期値。デフォルトは None

      • minvalue (int, optional): 最小許容値。デフォルトは None

      • maxvalue (int, optional): 最大許容値。デフォルトは None

    • 戻り値: 入力された整数値、またはキャンセルされた場合は None

  • askstring(app, title = 'Input text', message = 'Input float value', initialvalue = None)

    • 動作: 文字列を入力するためのダイアログを表示します。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • title (str, optional): ダイアログのタイトル。デフォルトは 'Input text'

      • message (str, optional): ダイアログに表示するメッセージ。デフォルトは 'Input float value'

      • initialvalue (str, optional): 初期値。デフォルトは None

    • 戻り値: 入力された文字列、またはキャンセルされた場合は None

  • dialog_showinfo(app, title = 'Information', message = 'no message')

    • 動作: 情報メッセージダイアログを表示します。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • title (str, optional): ダイアログのタイトル。デフォルトは 'Information'

      • message (str, optional): 表示するメッセージ。デフォルトは 'no message'

    • 戻り値: なし。

  • dialog_showwarning(app, title = 'Warning', message = 'no message')

    • 動作: 警告メッセージダイアログを表示します。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • title (str, optional): ダイアログのタイトル。デフォルトは 'Warning'

      • message (str, optional): 表示するメッセージ。デフォルトは 'no message'

    • 戻り値: なし。

  • dialog_showerror(app, title = 'Error', message = 'no message')

    • 動作: エラーメッセージダイアログを表示します。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • title (str, optional): ダイアログのタイトル。デフォルトは 'Error'

      • message (str, optional): 表示するメッセージ。デフォルトは 'no message'

    • 戻り値: なし。

  • dialog_retrycancel(app, title = 'Retry?', message = 'Do you want to retry?')

    • 動作: リトライ/キャンセル選択ダイアログを表示します。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • title (str, optional): ダイアログのタイトル。デフォルトは 'Retry?'

      • message (str, optional): 表示するメッセージ。デフォルトは 'Do you want to retry?'

    • 戻り値: リトライが選択された場合は True、キャンセルされた場合は False

  • dialog_yesno(app, title = 'Quit', message = 'Do you really quit the program?')

    • 動作: はい/いいえ選択ダイアログを表示します。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • title (str, optional): ダイアログのタイトル。デフォルトは 'Quit'

      • message (str, optional): 表示するメッセージ。デフォルトは 'Do you really quit the program?'

    • 戻り値: 「はい」が選択された場合は True、「いいえ」が選択された場合は False

  • dialog_okcancel(app, title = 'Quit', message = 'Do you really quit the program?')

    • 動作: OK/キャンセル選択ダイアログを表示します。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • title (str, optional): ダイアログのタイトル。デフォルトは 'Quit'

      • message (str, optional): 表示するメッセージ。デフォルトは 'Do you really quit the program?'

    • 戻り値: OKが選択された場合は True、キャンセルされた場合は False

  • Menu(app, parent = None, **kwargs)

    • 動作: tkinter.Menu ウィジェットを生成するラッパー関数。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • parent (tkinter.Widget, optional): メニューの親ウィジェット。デフォルトは None

      • **kwargs: tkinter.Menu に渡されるその他のキーワード引数。

    • 戻り値: tkinter.Menu オブジェクト。

  • Frame(app, parent = None, **kwargs)

    • 動作: tkinter.Frame ウィジェットを生成するラッパー関数。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • parent (tkinter.Widget, optional): フレームの親ウィジェット。デフォルトは None

      • **kwargs: tkinter.Frame に渡されるその他のキーワード引数。

    • 戻り値: tkinter.Frame オブジェクト。

  • CheckButton(app, parent = None, variable = None, defvalue = False, command = None, onvalue = True, offvalue = False, **kwargs)

    • 動作: tkinter.Checkbutton ウィジェットを生成するラッパー関数。デフォルト値の設定や変数管理を簡素化します。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • parent (tkinter.Widget, optional): チェックボタンの親ウィジェット。デフォルトは None

      • variable (tkinter.Variable, optional): チェックボタンの状態を保持する tkinter 変数。デフォルトは None(自動生成)。

      • defvalue (bool, optional): variableNone の場合に設定される初期値。デフォルトは False

      • command (callable, optional): チェックボタンの状態が変更されたときに呼び出される関数。デフォルトは None

      • onvalue: チェックされたときに variable に設定される値。デフォルトは True

      • offvalue: チェック解除されたときに variable に設定される値。デフォルトは False

      • **kwargs: tkinter.Checkbutton に渡されるその他のキーワード引数。

    • 戻り値: tkinter.Checkbutton オブジェクト(variable 属性に内部で生成された変数を保持)。

  • Entry(app, parent = None, **kwargs)

    • 動作: tkinter.Entry ウィジェットを生成するラッパー関数。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • parent (tkinter.Widget, optional): エントリーの親ウィジェット。デフォルトは None

      • **kwargs: tkinter.Entry に渡されるその他のキーワード引数。

    • 戻り値: tkinter.Entry オブジェクト。

  • Combobox(app, parent = None, **kwargs)

    • 動作: tkinter.ttk.Combobox ウィジェットを生成するラッパー関数。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • parent (tkinter.Widget, optional): コンボボックスの親ウィジェット。デフォルトは None

      • **kwargs: tkinter.ttk.Combobox に渡されるその他のキーワード引数。

    • 戻り値: tkinter.ttk.Combobox オブジェクト。

  • Button(app, parent = None, **kwargs)

    • 動作: tkButton クラス(tkinter.Button の拡張)を生成するラッパー関数。キャプションの国際化(app.p()) を適用します。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • parent (tkinter.Widget, optional): ボタンの親ウィジェット。デフォルトは None

      • **kwargs: tkButton に渡されるその他のキーワード引数。

    • 戻り値: tkButton オブジェクト。

  • Text(app, parent = None, **kwargs)

    • 動作: tkinter.Text ウィジェットを生成するラッパー関数。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • parent (tkinter.Widget, optional): テキストウィジェットの親。デフォルトは None

      • **kwargs: tkinter.Text に渡されるその他のキーワード引数。

    • 戻り値: tkinter.Text オブジェクト。

  • Canvas(app, parent = None, canvas_args = {}, **kwargs)

    • 動作: matplotlib グラフを埋め込むための tkinter.Framematplotlib.backends.backend_tkagg.FigureCanvasTkAgg を組み合わせたキャンバスウィジェットを作成します。サイズ変更時の再描画やマウスイベント(クリック、右クリック)のハンドリング機能が含まれます。

    • 引数:

      • app: アプリケーションのルートオブジェクト。app.figure, app.canvas, app.canvas_widget 属性が設定されます。

      • parent (tkinter.Widget, optional): キャンバスの親ウィジェット。デフォルトは None

      • canvas_args (dict, optional): キャンバスの追加設定。以下のキーをサポートします。

        • use_scrollbar (bool): スクロールバーを使用するかどうか。デフォルトは False

        • figsize (list): matplotlib.Figure の初期サイズ(インチ単位の幅と高さ)。デフォルトは [6, 6]

        • min_canvas_size (list): キャンバスの最小サイズ(ピクセル単位の幅と高さ)。デフォルトは [3, 3]

      • **kwargs: tkinter.Frame に渡されるその他のキーワード引数(ただし、ここでは使用されていません)。

    • 戻り値: FigureCanvasTkAgg オブジェクト(ただし、実際には内部の tkinter.Frame がパックされ、この関数は FigureCanvasTkAgg のインスタンスを返しているように見えますが、返り値は FigureCanvasTkAgg 自体です)。

  • RangeFrame(app, parent = None, frame_args = {}, head_label_args = {}, x0_entry_args = {}, center_label_args = {}, x1_entry_args = {}, gridframe = None, igridrow = None)

    • 動作: 2つのエントリー(通常は tkSpinbox)とラベルを組み合わせて、範囲指定用のUIフレームを作成します。主にグリッドレイアウトでの使用を想定しています。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • parent (tkinter.Widget, optional): 親ウィジェット。デフォルトは None

      • frame_args (dict, optional): 外側の tkinter.Frame のキーワード引数。デフォルトは {}

      • head_label_args (dict, optional): 先頭の tkinter.Label のキーワード引数。デフォルトは {}

      • x0_entry_args (dict, optional): 最初の値入力用エントリーのキーワード引数。textvariable にリスト [key, var_obj] を渡すと、app.tkvars に登録されます。デフォルトは {}

      • center_label_args (dict, optional): 中央の tkinter.Label のキーワード引数。デフォルトは {}

      • x1_entry_args (dict, optional): 2番目の値入力用エントリーのキーワード引数。textvariable にリスト [key, var_obj] を渡すと、app.tkvars に登録されます。デフォルトは {}

      • gridframe (tkinter.Frame, optional): 既存のフレームをグリッドレイアウトの親として使用する場合、そのフレームオブジェクト。デフォルトは None

      • igridrow (int, optional): gridframe を使用する場合の行インデックス。デフォルトは None

    • 戻り値: 生成された tkinter.Frame オブジェクト。

  • ComboboxFrame(app, parent, frame_args = { 'bg': 'dim gray' }, head_label_args = { 'text': 'Input module:' }, combobox_args = { 'textvariable': ['varname', None], 'values': ['abc', 'def'], 'default': 'def', 'width': 10 }, tail_label_args = { 'text': '' }, gridframe = None, igridrow = None, is_print = False, **kwargs)

    • 動作: ラベルと tkinter.ttk.Combobox を組み合わせたUIフレームを作成します。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • parent (tkinter.Widget): 親ウィジェット。

      • frame_args (dict, optional): 外側の tkinter.Frame のキーワード引数。デフォルトは {'bg': 'dim gray'}

      • head_label_args (dict, optional): 先頭の tkinter.Label のキーワード引数。デフォルトは {'text': 'Input module:'}

      • combobox_args (dict, optional): tkinter.ttk.Combobox のキーワード引数。textvariable にリスト [key, var_obj] を渡すと、app.tkvars に登録されます。デフォルトは {'textvariable': ['varname', None], 'values': ['abc', 'def'], 'default': 'def', 'width': 10}

      • tail_label_args (dict, optional): 末尾の tkinter.Label のキーワード引数。デフォルトは {'text': ''}

      • gridframe (tkinter.Frame, optional): 既存のフレームをグリッドレイアウトの親として使用する場合、そのフレームオブジェクト。デフォルトは None

      • igridrow (int, optional): gridframe を使用する場合の行インデックス。デフォルトは None

      • is_print (bool, optional): デバッグ情報を表示するかどうか。デフォルトは False

      • **kwargs: 未使用のキーワード引数。

    • 戻り値: 生成された tkinter.Frame オブジェクト。

  • PathFrame(app, parent = None, frame_args = {}, head_label_args = None, entry_args = None, combobox_args = None, spinbox_args = None, tail_label_args = None, button_args = None, save_button_args = None, edit_button_args = None, copy_button_args = None, optionmenu_args = None, menubotton_args = None, shell_button_args = None, font_size = 10, gridframe = None, grid_args = {}, igridrow = None, is_print = False, **kwargs)

    • 動作: パス入力用のエントリー(tkEntrytkinter.ttk.Combobox、または tkSpinbox のいずれか)、ラベル、ファイル/フォルダ選択ボタン、編集ボタン、コピーボタン、外部アプリ選択メニュー、シェル実行ボタンなどを組み合わせて複雑なパス操作UIフレームを作成します。非常に汎用性が高く、多様な構成が可能です。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • parent (tkinter.Widget, optional): 親ウィジェット。デフォルトは None

      • frame_args (dict, optional): 外側の tkinter.Frame のキーワード引数。デフォルトは {}

      • head_label_args (dict, optional): 先頭の tkinter.Label のキーワード引数。textapp.p() で国際化されます。width0 の場合、表示されません。デフォルトは None

      • entry_args (dict, optional): tkEntry のキーワード引数。textvariable にリスト [key, var_obj] を渡すと、app.tkvars に登録されます。width0 の場合、表示されません。デフォルトは None

      • combobox_args (dict, optional): tkinter.ttk.Combobox のキーワード引数。textvariable にリスト [key, var_obj] を渡すと、app.tkvars に登録されます。width0 の場合、表示されません。デフォルトは None

      • spinbox_args (dict, optional): tkSpinbox のキーワード引数。textvariable にリスト [key, var_obj] を渡すと、app.tkvars に登録されます。width0 の場合、表示されません。デフォルトは None

      • tail_label_args (dict, optional): 末尾の tkinter.ttk.Label のキーワード引数。textapp.p() で国際化されます。width0 の場合、表示されません。デフォルトは None

      • button_args (dict, optional): ファイル選択ボタン (tkinter.Button) のキーワード引数。textapp.p() で国際化されます。width0 の場合、表示されません。command が指定されない場合、path_button_click が呼び出されます。デフォルトは None

      • save_button_args (dict, optional): ファイル保存ボタン (tkinter.Button) のキーワード引数。textapp.p() で国際化されます。width0 の場合、表示されません。command が指定されない場合、path_button_click が呼び出されます。デフォルトは None

      • edit_button_args (dict, optional): 編集ボタン (tkinter.Button) のキーワード引数。textapp.p() で国際化されます。width0 の場合、表示されません。command が指定されない場合、edit_button_click が呼び出されます。デフォルトは None

      • copy_button_args (dict, optional): コピーボタン (tkinter.Button) のキーワード引数。textapp.p() で国際化されます。command が指定されない場合、エントリーの値をクリップボードにコピーする機能が設定されます。デフォルトは None

      • optionmenu_args (dict, optional): 外部アプリケーション選択用 tkinter.OptionMenu のキーワード引数。width0 の場合、表示されません。command が指定されない場合、選択されたアプリケーションでパスを開く execute_command が呼び出されます。デフォルトは None

      • menubotton_args (dict, optional): tkinter.Menubutton のキーワード引数。width0 の場合、表示されません。デフォルトは None

      • shell_button_args (dict, optional): シェル実行ボタン (tkinter.Button) のキーワード引数。textapp.p() で国際化されます。width0 の場合、表示されません。command が指定されない場合、shell_button_click が呼び出されます。デフォルトは None

      • font_size (int, optional): 使用するフォントサイズ。デフォルトは 10

      • gridframe (tkinter.Frame, optional): 既存のフレームをグリッドレイアウトの親として使用する場合、そのフレームオブジェクト。デフォルトは None

      • grid_args (dict, optional): grid() メソッドに渡されるキーワード引数。デフォルトは {}

      • igridrow (int, optional): gridframe を使用する場合の行インデックス。デフォルトは None

      • is_print (bool, optional): デバッグ情報を表示するかどうか。デフォルトは False

      • **kwargs: PathFrame 内部で使用される追加のキーワード引数(ini_dir, file_type など)。

    • 戻り値: 生成された tkinter.Frame オブジェクト。entry, combobox, spinbox, button, save_button, edit_button, copy_button, optionmenu, menubotton, shell_button 属性を介して内部ウィジェットにアクセスできます。

  • LabelEntryFrame(app, parent = None, frame_args = {}, label_args = None, entry_args = None, combobox_args = None, spinbox_args = None, gridframe = None, grid_args = {}, igridrow = 0)

    • 動作: ラベルと単一のエントリー(またはコンボボックス、スピンボックス)を組み合わせたUIフレームを作成する PathFrame のラッパー関数。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • parent (tkinter.Widget, optional): 親ウィジェット。デフォルトは None

      • frame_args (dict, optional): 外側の tkinter.Frame のキーワード引数。デフォルトは {}

      • label_args (dict, optional): ラベルのキーワード引数(PathFramehead_label_args に対応)。デフォルトは None

      • entry_args (dict, optional): エントリーのキーワード引数(PathFrameentry_args に対応)。デフォルトは None

      • combobox_args (dict, optional): コンボボックスのキーワード引数(PathFramecombobox_args に対応)。デフォルトは None

      • spinbox_args (dict, optional): スピンボックスのキーワード引数(PathFramespinbox_args に対応)。デフォルトは None

      • gridframe (tkinter.Frame, optional): 既存のフレームをグリッドレイアウトの親として使用する場合、そのフレームオブジェクト。デフォルトは None

      • grid_args (dict, optional): grid() メソッドに渡されるキーワード引数。デフォルトは {}

      • igridrow (int, optional): gridframe を使用する場合の行インデックス。デフォルトは 0

    • 戻り値: 生成された tkinter.Frame オブジェクト。

  • make_check_box(app, cparams, tkvars, parent, grid_frame, varname = 'none', label = None, values = None, defval = True, reset_val = True, help_text = None, button1_args = None, button2_args = None, onvalue = True, offvalue = False, igridrow = 0)

    • 動作: チェックボックスウィジェットとその関連ボタン(デフォルト値設定、ヘルプ表示)を作成します。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • cparams: 設定パラメータを含む辞書。

      • tkvars: tkinter 変数を管理するオブジェクト(tkParams のインスタンスを想定)。

      • parent (tkinter.Widget): 親ウィジェット。

      • grid_frame (tkinter.Frame): グリッドレイアウトの親として使用するフレーム。

      • varname (str, optional): チェックボックスの状態を保持する変数の名前。デフォルトは 'none'

      • label (str, optional): チェックボックスに表示するテキスト。デフォルトは varname

      • values: 未使用の引数。

      • defval (bool or int, optional): チェックボックスの初期値。デフォルトは True

      • reset_val (bool or int, optional): 「デフォルト」ボタンが押されたときに設定される値。デフォルトは True

      • help_text (str, optional): ヘルプボタンが押されたときに表示されるテキスト。デフォルトは f"help_{varname}"

      • button1_args (dict, optional): 最初の追加ボタンのキーワード引数。"command" キーに 'set_default''show_help' を指定すると、対応する内部関数が呼び出されます。デフォルトは None

      • button2_args (dict, optional): 2番目の追加ボタンのキーワード引数。"command" キーに 'set_default''show_help' を指定すると、対応する内部関数が呼び出されます。デフォルトは None

      • onvalue: チェックされたときに変数が取る値。デフォルトは True

      • offvalue: チェック解除されたときに変数が取る値。デフォルトは False

      • igridrow (int, optional): grid_frame 内での行インデックス。デフォルトは 0

    • 戻り値: なし。

  • make_var_box(app, cparams, tkvars, parent, grid_frame, varname = 'none', vartype = 'int', label = None, values = None, from_ = None, to = 100, increment = 10, box_width = 6, defval = 0, reset_val = None, help_text = None, button1_args = None, button2_args = None, igridrow = 0)

    • 動作: 数値(整数、浮動小数点数)または文字列を入力するためのエントリー/スピンボックス/コンボボックスウィジェットと、関連するボタンを作成します。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • cparams: 設定パラメータを含む辞書。

      • tkvars: tkinter 変数を管理するオブジェクト(tkParams のインスタンスを想定)。

      • parent (tkinter.Widget): 親ウィジェット。

      • grid_frame (tkinter.Frame): グリッドレイアウトの親として使用するフレーム。

      • varname (str, optional): 変数の名前。デフォルトは 'none'

      • vartype (str, optional): 変数のタイプ('int', 'str', 'double' / 'float')。デフォルトは 'int'

      • label (str, optional): 表示するラベルテキスト。デフォルトは varname

      • values (list, optional): コンボボックスとして使用する場合の選択肢のリスト。デフォルトは None(エントリーまたはスピンボックスを使用)。

      • from_ (float or int, optional): スピンボックスの最小値。デフォルトは None

      • to (float or int, optional): スピンボックスの最大値。デフォルトは 100

      • increment (float or int, optional): スピンボックスの増分値。デフォルトは 10

      • box_width (int, optional): エントリー/スピンボックス/コンボボックスの幅。デフォルトは 6

      • defval (any, optional): 変数の初期値。リストまたはタプルの場合、config.get(varname, _defval) 形式で設定を読み込みます。デフォルトは 0

      • reset_val (any, optional): 「デフォルト」ボタンが押されたときに設定される値。デフォルトは None

      • help_text (str, optional): ヘルプボタンが押されたときに表示されるテキスト。デフォルトは f"help_{varname}"

      • button1_args (dict, optional): 最初の追加ボタンのキーワード引数。"command" キーに 'set_default''show_help' を指定すると、対応する内部関数が呼び出されます。デフォルトは None

      • button2_args (dict, optional): 2番目の追加ボタンのキーワード引数。"command" キーに 'set_default''show_help' を指定すると、対応する内部関数が呼び出されます。デフォルトは None

      • igridrow (int, optional): grid_frame 内での行インデックス。デフォルトは 0

    • 戻り値: 生成された tkinter.Frame オブジェクト。

  • make_path_frame(app, cparams, parent, grid_frame, tkvar, varname, file_type = [("All", "*.*")], working_dir = '.', open_command = None, post_open_command = None, head_label_width = 10, entry_width = 60, button_width = 12, button_args = None, copy_button_args = None, edit_button_width = 6, edit_button_args = None, shell_button_width = 2, optionmenu_width = 3, font_size = 10, is_print = True, igridrow = 0)

    • 動作: ファイルパス入力、選択ボタン、編集ボタン、外部アプリケーションでの実行、シェル実行などの機能を持つ PathFrame を作成するヘルパー関数。lambda 関数で変数が正しく捕捉されるように、ローカルスコープで変数を使用する設計になっています。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • cparams: 設定パラメータを含む辞書。

      • parent (tkinter.Widget): 親ウィジェット。

      • grid_frame (tkinter.Frame): グリッドレイアウトの親として使用するフレーム。

      • tkvar: tkinter 変数を管理するオブジェクト(tkParams のインスタンスを想定)。

      • varname (str): パスを保持する変数の名前。

      • file_type (list, optional): ファイル選択ダイアログのファイルタイプフィルタ。デフォルトは [("All", "*.*")]

      • working_dir (str, optional): パス選択ダイアログの初期ディレクトリや外部コマンドの作業ディレクトリ。デフォルトは .

      • open_command (callable, optional): ファイル選択ボタンが押されたときに実行されるカスタムコマンド。デフォルトは None

      • post_open_command (callable, optional): ファイル選択後に実行されるカスタムコマンド。デフォルトは None

      • head_label_width (int, optional): 先頭ラベルの幅。デフォルトは 10

      • entry_width (int, optional): エントリーウィジェットの幅。デフォルトは 60

      • button_width (int, optional): ファイル選択ボタンの幅。デフォルトは 12

      • button_args (dict, optional): ファイル選択ボタンのキーワード引数。デフォルトは None

      • copy_button_args (dict, optional): コピーボタンのキーワード引数。デフォルトは None

      • edit_button_width (int, optional): 編集ボタンの幅。デフォルトは 6

      • edit_button_args (dict, optional): 編集ボタンのキーワード引数。デフォルトは None

      • shell_button_width (int, optional): シェルボタンの幅。デフォルトは 2

      • optionmenu_width (int, optional): オプションメニューの幅。デフォルトは 3

      • font_size (int, optional): 使用するフォントサイズ。デフォルトは 10

      • is_print (bool, optional): デバッグ情報を表示するかどうか。デフォルトは True

      • igridrow (int, optional): grid_frame 内での行インデックス。デフォルトは 0

    • 戻り値: 生成された PathFrame オブジェクト。

  • Editor(app, parent = None, frame_args = {}, head_label_args = {}, entry_args = {}, tail_label_args = None, button_args = {}, eval_button_args = None, **kwargs)

    • 動作: ファイルパス入力フィールドとテキストエリアを組み合わせた、簡易的なエディタ風UIコンポーネントを作成します。テキストエリアには右クリックメニュー(カット、コピー、ペースト、削除、全選択)が組み込まれています。

    • 引数:

      • app: アプリケーションのルートオブジェクト。

      • parent (tkinter.Widget, optional): 親ウィジェット。デフォルトは None

      • frame_args (dict, optional): 外側の tkinter.Frame のキーワード引数。デフォルトは {}

      • head_label_args (dict, optional): パス入力部分の先頭ラベルのキーワード引数。デフォルトは {}

      • entry_args (dict, optional): パス入力部分のエントリーのキーワード引数。デフォルトは {}

      • tail_label_args (dict, optional): パス入力部分の末尾ラベルのキーワード引数。デフォルトは None

      • button_args (dict, optional): パス入力部分のファイル選択ボタンのキーワード引数。デフォルトは {}

      • eval_button_args (dict, optional): パス入力部分のシェル実行ボタンのキーワード引数。デフォルトは None

      • **kwargs: テキストウィジェット(tkinter.Text) に渡されるその他のキーワード引数。

    • 戻り値: 生成された tkinter.Frame オブジェクト。PathFrameentryeval_buttonText 属性を介して内部ウィジェットにアクセスできます。

  • add_widget(self, c)

    • 動作: tkCustomDialog_by_config クラスの内部で使用されるヘルパー関数で、config オブジェクト (c) の定義に基づいて様々なウィジェット(ラベル、ボタン、エントリー、チェックボックス、リストボックス、コンボボックス、ラジオボタン、スピンボックス、ファイル/ディレクトリ選択フィールド、タブなど)を動的に生成し、ダイアログに追加します。

    • 引数:

      • self: tkCustomDialog_by_config インスタンス。

      • c: ウィジェットのタイプ、変数名、引数、オプションなどを定義する設定オブジェクト。

    • 戻り値: なし。


クラス

  • class tkScrolledListbox(tkinter.Listbox)

    • 親クラス: tkinter.Listbox

    • 動作: 垂直スクロールバー付きの tkinter.Listbox を提供します。Listbox とスクロールバーは内部の tkinter.Frame にまとめて配置されます。

    • メソッド:

      • clear(): Listbox の内容を全て削除します。

  • class tkEntry(tkinter.ttk.Entry)

    • 親クラス: tkinter.ttk.Entry

    • 動作: 右クリックメニュー(Cut, Copy, Paste, Delete, Select all)を追加した tkinter.ttk.Entry を提供します。

    • 属性:

      • app: アプリケーションのルートオブジェクト。

      • default_fontfamily: デフォルトのフォントファミリー(初期値は空文字列)。

      • default_fontsize: デフォルトのフォントサイズ(初期値は10)。

      • menu: 右クリック時に表示される tkinter.Menu オブジェクト。

  • class tkSpinbox(tkinter.Spinbox)

    • 親クラス: tkinter.Spinbox

    • 動作: 右クリックメニュー(Cut, Copy, Paste, Delete, Select all)を追加した tkinter.Spinbox を提供します。

    • 属性:

      • app: アプリケーションのルートオブジェクト。

      • default_fontfamily: デフォルトのフォントファミリー(初期値は"Yu Gothic UI")。

      • default_fontsize: デフォルトのフォントサイズ(初期値は10)。

      • menu: 右クリック時に表示される tkinter.Menu オブジェクト。

  • class tkButton(tkinter.Button)

    • 親クラス: tkinter.Button

    • 動作: テキスト設定時に特定のプレフィックス !!! を認識し、そのテキストに打ち消し線(取り消し線)と赤色フォントを適用する機能を持つ tkinter.Button の拡張です。

    • メソッド:

      • set_text(caption): ボタンのテキストを設定します。caption!!! で始まる場合、残りの部分が打ち消し線付きの赤色テキストとして表示されます。

      • get_text(): 現在ボタンに表示されているテキストを取得します。

  • class tkSetupDialog(tkinter.simpledialog.Dialog)

    • 親クラス: tkinter.simpledialog.Dialog

    • 動作: アプリケーションの各種設定(エディタパス、Pythonパス、Perlパス、VESTAパス、シェルパス、ファイルマネージャーパス、終了時確認、デバッグモード、ログ表示など)を行うための設定ダイアログです。widgets 引数で表示する設定項目を制御できます。

    • 引数:

      • master: 親ウィジェット。

      • app: アプリケーションのルートオブジェクト。

      • title (str, optional): ダイアログのタイトル。

      • entry_width (int, optional): パス入力エントリーの幅。デフォルトは 30

      • button_width (int, optional): ボタンの幅。デフォルトは 4

      • edit_button_width (int, optional): 編集ボタンの幅。デフォルトは 2

      • shell_button_width (int, optional): シェルボタンの幅。デフォルトは 2

      • widgets (str, optional): 表示する設定ウィジェットをパイプ | で区切った文字列。デフォルトは 'enditor_path|confirm_on_exit|debug_mode'

      • font_size (int, optional): ウィジェットのフォントサイズ。デフォルトは 10

      • is_print (bool, optional): デバッグ情報を表示するかどうか。デフォルトは False

    • メソッド:

      • body(master): ダイアログの本体ウィジェットを構築します。

      • buttonbox(): OK/Cancel ボタン(ここでは "Apply" と "Cancel")を配置します。

      • switchButtonState(): Apply ボタンの状態を切り替えます(現在は使用されていません)。

      • apply(): ダイアログが閉じられたときに、ユーザーの入力設定を app.configparams に適用します。

  • class tkdialog_yesno(tkinter.simpledialog.Dialog)

    • 親クラス: tkinter.simpledialog.Dialog

    • 動作: シンプルな Yes/No 確認ダイアログを表示します。

    • 引数:

      • master: 親ウィジェット。

      • title (str, optional): ダイアログのタイトル。

      • message (str, optional): 表示するメッセージ。

      • width (int, optional): メッセージラベルの幅。デフォルトは 80

    • 属性:

      • ret: 選択結果(Yes/No)。

    • メソッド:

      • body(master): ダイアログの本体(メッセージラベル)を構築します。

      • buttonbox(): Yes/No ボタンを配置します。

  • class tkCustomDialog_by_config(tkinter.simpledialog.Dialog)

    • 親クラス: tkinter.simpledialog.Dialog

    • 動作: config 引数で与えられたウィジェット定義のリストに基づいて、完全にカスタマイズ可能なダイアログを動的に生成します。様々なタイプのウィジェットを柔軟に組み合わせることができます。

    • 引数:

      • master: 親ウィジェット。

      • app: アプリケーションのルートオブジェクト。

      • title (str, optional): ダイアログのタイトル。

      • config (list): ウィジェット定義オブジェクトのリスト。各オブジェクトは widget, var, args, vars などの属性を持つことを想定しています。

      • buttons (str, optional): 表示するボタンの種類を制御する文字列(例: "okcancel", "yesno", "close")。デフォルトは "okcancel"

      • modeless (bool, optional): モーダルダイアログとして開くか(False)、モードレスダイアログとして開くか(True)。デフォルトは False

      • callback (callable, optional): ダイアログが閉じられたときに呼び出されるコールバック関数。デフォルトは None

      • is_print (bool, optional): デバッグ情報を表示するかどうか。デフォルトは False

    • 属性:

      • ret: ダイアログが閉じられたときに、各ウィジェットから取得された値を含む辞書。

      • vars: 各ウィジェットの値を保持する一般的な変数辞書。

      • tkvars: 各ウィジェットの tkinter 変数を管理する tkParams オブジェクト。

      • widget_vars: 各ウィジェットのインスタンス自体を管理する tkParams オブジェクト。

    • メソッド:

      • body(master): config に基づいて、ウィジェット定義を add_widget 関数に渡し、ダイアログ本体を動的に構築します。

      • buttonbox(): 指定された buttons に応じてボタンを配置します。

      • update_vars(): ダイアログ内の各ウィジェットから現在の値を取得し、self.ret に格納します。

      • apply(): ダイアログが閉じられたときに update_vars() を呼び出します。

  • class tkSelectDialog(tkinter.simpledialog.Dialog)

    • 親クラス: tkinter.simpledialog.Dialog

    • 動作: リストボックスから項目を選択するためのダイアログを表示します。

    • 引数:

      • master: 親ウィジェット。

      • app: アプリケーションのルートオブジェクト。

      • title (str, optional): ダイアログのタイトル。

      • varname: 未使用の引数。

      • message (str, optional): ダイアログに表示するメッセージ。デフォルトは ""

      • options (list, optional): リストボックスに表示する選択肢のリスト。デフォルトは []

      • width (int, optional): リストボックスの幅。デフォルトは 30

      • height (int, optional): リストボックスの高さ。デフォルトは 5

      • def_index (int, optional): 初期選択する項目のインデックス。デフォルトは None

      • is_print (bool, optional): デバッグ情報を表示するかどうか。デフォルトは False

    • 属性:

      • ret: 選択された項目。

    • メソッド:

      • body(master): ダイアログの本体(メッセージとスクロール付きリストボックス)を構築します。

      • apply(): ダイアログが閉じられたときに、選択された項目を self.ret に設定します。

  • class tkInputDialog(tkinter.simpledialog.Dialog)

    • 親クラス: tkinter.simpledialog.Dialog

    • 動作: 複数行テキストを入力するためのダイアログを表示します。

    • 引数:

      • master: 親ウィジェット。

      • app: アプリケーションのルートオブジェクト。

      • title (str, optional): ダイアログのタイトル。

      • message (str, optional): ダイアログに表示するメッセージ。デフォルトは ''

      • width (int, optional): テキスト入力エリアの幅。デフォルトは 30

      • height (int, optional): テキスト入力エリアの高さ。デフォルトは 10

      • def_val (str, optional): 初期入力テキスト。デフォルトは ''

      • is_print (bool, optional): デバッグ情報を表示するかどうか。デフォルトは False

    • 属性:

      • ret: 入力されたテキスト。

    • メソッド:

      • body(master): ダイアログの本体(メッセージとテキスト入力エリア)を構築します。

      • apply(): ダイアログが閉じられたときに、入力されたテキストを self.ret に設定します。


数式例

インライン数式は $E=mc^2$ のように記述します。

ブロック数式は以下のように独立した行に記述し、その前後は必ず空行で挟んでください。

\[\frac{\partial u}{\partial t} = D \frac{\partial^2 u}{\partial x^2}\]

main scriptとして実行したときの動作

tktkinter.py には if __name__ == '__main__': ブロックが存在しないため、このファイルを直接Pythonスクリプトとして実行しても、特別な動作は行われません。ライブラリとして他のプログラムからインポートして使用することを想定しています。