tktkinter.py 技術ドキュメント
ライブラリの機能や目的
tktkinter.py は、Tkinterウィジェットのラッパー関数とカスタムウィジェットを提供するPythonモジュールです。このライブラリの主な目的は、Tkinterアプリケーション開発を簡素化し、よりリッチで使いやすいUIコンポーネントを提供することにあります。
提供される主な機能は以下の通りです。
共通UIコンポーネント: Tkinterの基本的なウィジェット(Menu, Frame, CheckButton, Entry, Combobox, Button, Textなど)に対するラッパーを提供し、アプリケーションの変数管理や国際化処理との統合を容易にします。
ファイル/フォルダ選択ダイアログ: フォルダ選択 (
folder_button_click) やファイル選択・保存 (path_button_click) のダイアログを表示する機能を提供します。メッセージボックスと入力ダイアログ: 情報表示、警告、エラー、再試行/キャンセル、はい/いいえ、OK/キャンセルなどの各種メッセージボックスや、浮動小数点数、整数、文字列の入力ダイアログを提供します。
カスタム入力ウィジェット: 右クリックメニュー(カット、コピー、ペーストなど)が組み込まれた
tkEntryやtkSpinbox、ラベルと入力フィールドを組み合わせたLabelEntryFrameやPathFrame、範囲指定のためのRangeFrameなど、拡張された入力ウィジェットを提供します。Matplotlibの埋め込みキャンバス:
Canvas関数を通じて、MatplotlibのグラフをTkinterアプリケーション内に埋め込み、スクロールバーの有無やサイズ調整、マウスイベントハンドリングを設定できる機能を提供します。設定ダイアログジェネレータ:
tkSetupDialogおよびtkCustomDialog_by_configを使用して、アプリケーションの設定を動的に生成・管理できる高度なダイアログ機能を提供します。これにより、外部エディタのパス設定や各種オプションの切り替えなど、複雑な設定UIを柔軟に構築できます。
このライブラリは、Tkinterをベースとしたデスクトップアプリケーションにおいて、定型的なUI実装の手間を削減し、開発者がよりアプリケーションのロジックに集中できるようにすることを目的としています。
importする方法
このライブラリを他のPythonプログラムから利用するには、通常以下のようにインポートします。
特定の関数やクラスのみをインポートする場合:
from tktkinter import Button, Entry, tkSetupDialog
モジュール全体をインポートする場合(推奨):
import tktkinter
# tktkinter.Button(app, parent, text="Hello") のように利用
必要な非標準ライブラリとインストール方法
このライブラリが動作するために必要な非標準ライブラリは以下の通りです。
matplotlib:
目的: MatplotlibのグラフをTkinterアプリケーション内に埋め込むために必要です。
インストール方法:
pip install matplotlib
このライブラリは、tklib.tkutils および tklib.tkparams というカスタムライブラリに依存しています。これらのライブラリは tktkinter.py が提供するものではなく、別途入手・配置する必要があります。本ドキュメントでは、それらのインストール方法については提供していません。
importできる変数と関数
このライブラリから直接インポートして使用できる関数とクラスは以下の通りです。
関数
set_variable_from_list(app, key, var)動作: Tkinter変数をリストから設定し、アプリケーションの変数管理 (
app.tkvars) にキーと変数を関連付けて登録します。引数:
app: アプリケーションのインスタンス。key: 変数を識別するためのキー文字列。var: 設定するTkinter変数(StringVar, IntVar, BooleanVarなど)。
戻り値: 設定されたTkinter変数 (
tkinter.Variable)。
execute_command(app, command, working_dir = None, is_print = False, files = [])動作: 外部コマンドを実行します。コマンド文字列を解析し、オプションの作業ディレクトリとファイル引数を適用して
os.systemで実行します。引数:
app: アプリケーションのインスタンス。command: 実行するコマンド文字列。角括弧[]で囲まれた引数を含めることができます。working_dir: (オプション) コマンドを実行する作業ディレクトリ。デフォルトはNone。is_print: (オプション) 実行するコマンドを標準出力に表示するかどうか。デフォルトはFalse。files: (オプション) コマンドに追加するファイルパスのリスト。デフォルトは[]。
戻り値:
os.systemの戻り値(通常はコマンドの終了ステータス) (int)。
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変数(またはComboboxウィジェット)。ini_dir: (オプション) ダイアログの初期ディレクトリ。デフォルトは'.'。title: (オプション) ダイアログのタイトル。デフォルトはNone。mustexist: (オプション) 選択されたディレクトリが存在しなければならないか。デフォルトはTrue。entry_type: (オプション)entry_variableのタイプ ('entry'または'combobox')。'combobox'の場合、ファイルリストで更新されます。entry_filemask: (オプション)entry_typeが'combobox'の場合にファイルリスト取得に使用するファイルマスク。
path_button_click(app, entry_variable, ini_dir = '.', title = None, file_type = [("All", "*.*")], entry_type = 'entry', entry_filemask = '*;*.*', check_exist = True)動作: ファイル選択または保存ダイアログを表示し、選択されたパスをTkinter変数に設定します。
entry_typeが'combobox'の場合、選択されたパス内のファイルリストでコンボボックスの値を更新します。引数:
app: アプリケーションのインスタンス。entry_variable: 選択されたファイルパスを格納するTkinter変数(またはComboboxウィジェット)。ini_dir: (オプション) ダイアログの初期ディレクトリ。デフォルトは'.'。title: (オプション) ダイアログのタイトル。デフォルトはNone。file_type: (オプション) ダイアログに表示するファイルタイプのリスト。例:[("Text files", "*.txt")]。entry_type: (オプション)entry_variableのタイプ ('entry'または'combobox')。'combobox'の場合、ファイルリストで更新されます。entry_filemask: (オプション)entry_typeが'combobox'の場合にファイルリスト取得に使用するファイルマスク。check_exist: (オプション) ファイルが存在するかどうかを確認するか(askopenfilenameまたはasksaveasfilenameのどちらを使用するか)。デフォルトはTrue。
edit_button_click(app, entry_variable, editor_path = None)動作: 指定されたエディタでファイルを開きます。
entry_variableからファイルパスを取得し、editor_pathで指定されたエディタでos.systemを使ってファイルを開きます。editor_pathがNoneの場合、app.get_editor()から取得します。引数:
app: アプリケーションのインスタンス。entry_variable: 編集するファイルパスを含むTkinter変数。editor_path: (オプション) 使用するエディタのパス。Noneの場合、app.get_editor()を使用。
shell_button_click(app, cmd = None)動作: コマンドプロンプトまたはシェルを開きます。
ComSpec環境変数を参照してシェルコマンド(通常はcmd.exe)を取得し、os.systemで実行します。cmdが指定されない場合、新しいシェルウィンドウを開きます。引数:
app: アプリケーションのインスタンス。cmd: (オプション) 実行する特定のシェルコマンド。Noneの場合、デフォルトのシェルを開きます。
color_dialog(app = None, parent = None, title = None, color = None)動作: 色選択ダイアログを表示します。
tkinter.colorchooser.askcolorを呼び出し、ユーザーが色を選択できるようにします。引数:
app: (オプション) アプリケーションのインスタンス。主にparentの指定に使用されます。parent: (オプション) ダイアログの親ウィジェット。title: (オプション) ダイアログのタイトル。color: (オプション) ダイアログの初期色。
戻り値:
((R, G, B), '#RRGGBB')形式の選択された色情報、または選択がキャンセルされた場合は(None, None)(tuple)。
font_dialog(app = None, parent = None, title = None, color = None)動作: フォント選択ダイアログを表示します。
tk fontchooserコマンドを呼び出し、ユーザーがフォントを選択できるようにします。選択されたフォントはtkParamsインスタンスを通じて返されます。引数:
app: (オプション) アプリケーションのインスタンス。主にroot_windowの指定に使用されます。parent: (オプション) ダイアログの親ウィジェット。title: (オプション) ダイアログのタイトル。color: (オプション) 現在使用されていません。
戻り値: 選択されたフォントオブジェクト (
tkinter.font.Font)。
dialog_askfloat(app, title = 'Input float value', message = 'Input float value', initialvalue = None, minvalue = None, maxvalue = None)動作: 浮動小数点数入力を求めるダイアログを表示します。
tkinter.simpledialog.askfloatを使用して、タイトル、メッセージ、初期値、最小値、最大値を含む入力ダイアログを表示します。引数:
app: アプリケーションのインスタンス。title: (オプション) ダイアログのタイトル。message: (オプション) ダイアログに表示するメッセージ。initialvalue: (オプション) 入力フィールドの初期値。minvalue: (オプション) 許容される最小値。maxvalue: (オプション) 許容される最大値。
戻り値: ユーザーが入力した浮動小数点数、またはキャンセルされた場合は
None(floatorNone)。
askinteger(app, title = 'Input float value', message = 'Input float value', initialvalue = None, minvalue = None, maxvalue = None)動作: 整数入力を求めるダイアログを表示します。
tkinter.simpledialog.askintegerを使用して、タイトル、メッセージ、初期値、最小値、最大値を含む入力ダイアログを表示します。引数:
app: アプリケーションのインスタンス。title: (オプション) ダイアログのタイトル。message: (オプション) ダイアログに表示するメッセージ。initialvalue: (オプション) 入力フィールドの初期値。minvalue: (オプション) 許容される最小値。maxvalue: (オプション) 許容される最大値。
戻り値: ユーザーが入力した整数、またはキャンセルされた場合は
None(intorNone)。
askstring(app, title = 'Input text', message = 'Input float value', initialvalue = None)動作: 文字列入力を求めるダイアログを表示します。
tkinter.simpledialog.askstringを使用して、タイトル、メッセージ、初期値を含む入力ダイアログを表示します。引数:
app: アプリケーションのインスタンス。title: (オプション) ダイアログのタイトル。message: (オプション) ダイアログに表示するメッセージ。initialvalue: (オプション) 入力フィールドの初期値。
戻り値: ユーザーが入力した文字列、またはキャンセルされた場合は
None(strorNone)。
dialog_showinfo(app, title = 'Information', message = 'no message')動作: 情報メッセージボックスを表示します。
tkinter.messagebox.showinfoを使用して、タイトルとメッセージを含む情報ダイアログを表示します。引数:
app: アプリケーションのインスタンス。title: (オプション) メッセージボックスのタイトル。message: (オプション) メッセージボックスに表示するメッセージ。
dialog_showwarning(app, title = 'Warning', message = 'no message')動作: 警告メッセージボックスを表示します。
tkinter.messagebox.showwarningを使用して、タイトルとメッセージを含む警告ダイアログを表示します。引数:
app: アプリケーションのインスタンス。title: (オプション) メッセージボックスのタイトル。message: (オプション) メッセージボックスに表示するメッセージ。
dialog_showerror(app, title = 'Error', message = 'no message')動作: エラーメッセージボックスを表示します。
tkinter.messagebox.showerrorを使用して、タイトルとメッセージを含むエラーダイアログを表示します。引数:
app: アプリケーションのインスタンス。title: (オプション) メッセージボックスのタイトル。message: (オプション) メッセージボックスに表示するメッセージ。
dialog_retrycancel(app, title = 'Retry?', message = 'Do you want to retry?')動作: 「再試行」または「キャンセル」を選択するダイアログを表示します。
tkinter.messagebox.askretrycancelを使用して、タイトルとメッセージを含む確認ダイアログを表示します。引数:
app: アプリケーションのインスタンス。title: (オプション) メッセージボックスのタイトル。message: (オプション) メッセージボックスに表示するメッセージ。
戻り値: ユーザーが「再試行」を選択した場合は
True、「キャンセル」を選択した場合はFalse(bool)。
dialog_yesno(app, title = 'Quit', message = 'Do you really quit the program?')動作: 「はい」または「いいえ」を選択するダイアログを表示します。
tkinter.messagebox.askyesnoを使用して、タイトルとメッセージを含む確認ダイアログを表示します。引数:
app: アプリケーションのインスタンス。title: (オプション) メッセージボックスのタイトル。message: (オプション) メッセージボックスに表示するメッセージ。
戻り値: ユーザーが「はい」を選択した場合は
True、「いいえ」を選択した場合はFalse(bool)。
dialog_okcancel(app, title = 'Quit', message = 'Do you really quit the program?')動作: 「OK」または「キャンセル」を選択するダイアログを表示します。
tkinter.messagebox.askokcancelを使用して、タイトルとメッセージを含む確認ダイアログを表示します。引数:
app: アプリケーションのインスタンス。title: (オプション) メッセージボックスのタイトル。message: (オプション) メッセージボックスに表示するメッセージ。
戻り値: ユーザーが「OK」を選択した場合は
True、「キャンセル」を選択した場合はFalse(bool)。
Menu(app, parent = None, **kwargs)動作: Tkinterのメニューウィジェットを作成します。
tkinter.Menuインスタンスを生成し、親ウィジェットと追加のオプションを受け取ります。引数:
app: アプリケーションのインスタンス。parent: (オプション) メニューの親ウィジェット。**kwargs:tkinter.Menuに渡される追加のキーワード引数。
戻り値: 作成されたメニューウィジェット (
tkinter.Menu)。
Frame(app, parent = None, **kwargs)動作: Tkinterのフレームウィジェットを作成します。
tkinter.Frameインスタンスを生成し、親ウィジェットと追加のオプションを受け取ります。引数:
app: アプリケーションのインスタンス。parent: (オプション) フレームの親ウィジェット。**kwargs:tkinter.Frameに渡される追加のキーワード引数。
戻り値: 作成されたフレームウィジェット (
tkinter.Frame)。
CheckButton(app, parent = None, variable = None, defvalue = False, command = None, onvalue = True, offvalue = False, **kwargs)動作: Tkinterのチェックボタンウィジェットを作成します。
tkinter.Checkbuttonインスタンスを生成し、必要に応じてtkinter.BooleanVarを自動的に作成して関連付けます。引数:
app: アプリケーションのインスタンス。parent: (オプション) チェックボタンの親ウィジェット。variable: (オプション) チェックボタンの状態を管理するTkinter変数(BooleanVarなど)。指定されない場合、自動生成されます。defvalue: (オプション)variableが自動生成される場合の初期値。デフォルトはFalse。command: (オプション) チェックボタンがクリックされたときに実行されるコールバック関数。onvalue: (オプション) チェックされたときにvariableに設定される値。デフォルトはTrue。offvalue: (オプション) チェックが外されたときにvariableに設定される値。デフォルトはFalse。**kwargs:tkinter.Checkbuttonに渡される追加のキーワード引数。
戻り値: 作成されたチェックボタンウィジェット (
tkinter.Checkbutton)。
Entry(app, parent = None, **kwargs)動作: Tkinterの入力フィールドウィジェットを作成します。
tkinter.Entryインスタンスを生成し、親ウィジェットと追加のオプションを受け取ります。引数:
app: アプリケーションのインスタンス。parent: (オプション) エントリウィジェットの親。**kwargs:tkinter.Entryに渡される追加のキーワード引数。
戻り値: 作成されたエントリウィジェット (
tkinter.Entry)。
Combobox(app, parent = None, **kwargs)動作: Tkinterのコンボボックスウィジェットを作成します。
tkinter.ttk.Comboboxインスタンスを生成し、親ウィジェットと追加のオプションを受け取ります。引数:
app: アプリケーションのインスタンス。parent: (オプション) コンボボックスの親ウィジェット。**kwargs:tkinter.ttk.Comboboxに渡される追加のキーワード引数。
戻り値: 作成されたコンボボックスウィジェット (
tkinter.ttk.Combobox)。
Button(app, parent = None, **kwargs)動作: Tkinterのボタンウィジェットを作成します。
tkButtonカスタムクラスのインスタンスを生成します。ボタンのテキストはapp.p()で処理されます。引数:
app: アプリケーションのインスタンス。parent: (オプション) ボタンの親ウィジェット。**kwargs:tkButtonに渡される追加のキーワード引数。textは国際化処理されます。
戻り値: 作成されたボタンウィジェット (
tkButton)。
Text(app, parent = None, **kwargs)動作: Tkinterのテキストウィジェットを作成します。
tkinter.Textインスタンスを生成し、親ウィジェットと追加のオプションを受け取ります。引数:
app: アプリケーションのインスタンス。parent: (オプション) テキストウィジェットの親。**kwargs:tkinter.Textに渡される追加のキーワード引数。
戻り値: 作成されたテキストウィジェット (
tkinter.Text)。
Canvas(app, parent = None, canvas_args = {}, **kwargs)動作: Matplotlibの図を埋め込むことができるTkinterキャンバスウィジェットを作成します。
matplotlib.backends.backend_tkagg.FigureCanvasTkAggを使用してMatplotlibのFigureをTkinterフレームに埋め込みます。スクロールバーの有無、サイズ、イベントハンドリングを設定します。引数:
app: アプリケーションのインスタンス。parent: (オプション) キャンバスを配置する親ウィジェット。canvas_args: (オプション) キャンバスの動作に関する辞書型引数。canvas_args.use_scrollbar: (bool) スクロールバーを使用するかどうか。canvas_args.figsize: (list) MatplotlibのFigureサイズ (幅, 高さ) in inches。canvas_args.min_canvas_size: (list) キャンバスの最小サイズ (幅, 高さ) in pixels。
**kwargs: その他のキーワード引数(現在使用されていません)。
戻り値: 作成されたMatplotlibキャンバスウィジェット (
FigureCanvasTkAgg)。
RangeFrame(app, parent = None, frame_args = {}, head_label_args = {}, x0_entry_args = {}, center_label_args = {}, x1_entry_args = {}, gridframe = None, igridrow = None)動作: 2つのSpinbox(またはEntry)ウィジェットで範囲を指定するためのフレームウィジェットを作成します。ラベルと2つの入力フィールド(通常は
tkSpinbox)を水平に配置し、範囲入力UIを提供します。変数をapp.tkvarsに登録します。引数:
app: アプリケーションのインスタンス。parent: (オプション) フレームの親ウィジェット。frame_args: (オプション) メインフレームのキーワード引数。head_label_args: (オプション) 先頭のラベルウィジェットのキーワード引数。x0_entry_args: (オプション) 最初の入力フィールド(下限)のキーワード引数。textvariableはリスト形式[key, var]で指定可能。center_label_args: (オプション) 中央のラベルウィジェットのキーワード引数。x1_entry_args: (オプション) 2番目の入力フィールド(上限)のキーワード引数。textvariableはリスト形式[key, var]で指定可能。gridframe: (オプション) 既存のグリッドフレームを使用する場合、そのインスタンス。igridrow: (オプション)gridframeを使用する場合の行インデックス。
戻り値: 作成された範囲入力フレームウィジェット (
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)動作: ラベルとコンボボックスを組み合わせたフレームウィジェットを作成します。オプションで先頭と末尾にラベルを持ち、中央にコンボボックスを配置します。コンボボックスの
textvariableはapp.tkvarsに登録されます。引数:
app: アプリケーションのインスタンス。parent: フレームの親ウィジェット。frame_args: (オプション) メインフレームのキーワード引数。head_label_args: (オプション) 先頭のラベルウィジェットのキーワード引数。combobox_args: (オプション) コンボボックスウィジェットのキーワード引数。textvariableはリスト形式[key, var]で指定可能。tail_label_args: (オプション) 末尾のラベルウィジェットのキーワード引数。gridframe: (オプション) 既存のグリッドフレームを使用する場合、そのインスタンス。igridrow: (オプション)gridframeを使用する場合の行インデックス。is_print: (オプション) デバッグ情報を出力するかどうか。**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)動作: ファイルパスの入力、参照、編集、実行などをサポートする多機能なフレームウィジェットを作成します。ラベル、入力フィールド(Entry, Combobox, Spinboxのいずれか)、参照ボタン、編集ボタン、コピーボタン、外部アプリケーション選択メニュー、シェル実行ボタンなどを組み合わせて、ファイルパス関連のUIを構築します。
引数:
app: アプリケーションのインスタンス。parent: (オプション) フレームの親ウィジェット。frame_args: (オプション) メインフレームのキーワード引数。head_label_args: (オプション) 先頭のラベルウィジェットのキーワード引数。entry_args: (オプション) Entryウィジェットのキーワード引数。textvariableはリスト形式[key, var]で指定可能。combobox_args: (オプション) Comboboxウィジェットのキーワード引数。textvariableはリスト形式[key, var]で指定可能。spinbox_args: (オプション) Spinboxウィジェットのキーワード引数。textvariableはリスト形式[key, var]で指定可能。tail_label_args: (オプション) 末尾のラベルウィジェットのキーワード引数。button_args: (オプション) ファイル参照ボタンのキーワード引数。save_button_args: (オプション) ファイル保存ボタンのキーワード引数。edit_button_args: (オプション) 編集ボタンのキーワード引数。copy_button_args: (オプション) パスをクリップボードにコピーするボタンのキーワード引数。optionmenu_args: (オプション) 外部アプリケーション選択OptionMenuのキーワード引数。menubotton_args: (オプション) Menubuttonウィジェットのキーワード引数(現在フレーム内で動作しません)。shell_button_args: (オプション) シェル実行ボタンのキーワード引数。font_size: (オプション) ウィジェットのフォントサイズ。gridframe: (オプション) 既存のグリッドフレームを使用する場合、そのインスタンス。grid_args: (オプション) グリッドレイアウトのキーワード引数。igridrow: (オプション)gridframeを使用する場合の行インデックス。is_print: (オプション) デバッグ情報を出力するかどうか。**kwargs:path_button_clickなどに渡される追加のキーワード引数(ini_dir,file_typeなど)。
戻り値: 作成されたパスフレームウィジェット (
tkinter.Frame)。
LabelEntryFrame(app, parent = None, frame_args = {}, label_args = None, entry_args = None, combobox_args = None, spinbox_args = None, gridframe = None, grid_args = {}, igridrow = 0)動作: ラベルと入力フィールド(Entry, Combobox, Spinboxのいずれか)を組み合わせたフレームウィジェットを作成します。
PathFrame関数を内部的に呼び出すことで、シンプルにラベルと単一の入力フィールドを配置するUIを提供します。引数:
app: アプリケーションのインスタンス。parent: (オプション) フレームの親ウィジェット。frame_args: (オプション) メインフレームのキーワード引数。label_args: (オプション) ラベルウィジェットのキーワード引数。PathFrameのhead_label_argsに相当。entry_args: (オプション) Entryウィジェットのキーワード引数。combobox_args: (オプション) Comboboxウィジェットのキーワード引数。spinbox_args: (オプション) Spinboxウィジェットのキーワード引数。gridframe: (オプション) 既存のグリッドフレームを使用する場合、そのインスタンス。grid_args: (オプション) グリッドレイアウトのキーワード引数。igridrow: (オプション)gridframeを使用する場合の行インデックス。
戻り値: 作成されたラベル・エントリフレームウィジェット (
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.tkvarsに管理されるtkinter.BooleanVarまたはtkinter.IntVarに関連付けられたチェックボックスと、オプションで「デフォルト設定」ボタン、「ヘルプ」ボタンを配置します。引数:
app: アプリケーションのインスタンス。cparams: 設定パラメータを保持するオブジェクト。tkvars: Tkinter変数を管理する辞書またはオブジェクト。parent: チェックボックスを配置する親ウィジェット。grid_frame: チェックボックスを配置するグリッドフレーム。varname: (オプション) Tkinter変数の名前(キー)。デフォルトは'none'。label: (オプション) チェックボックスに表示するテキスト。Noneの場合、varnameが使用されます。values: (オプション) 現在使用されていません。defval: (オプション)tkvars[varname]の初期値。デフォルトはTrue。reset_val: (オプション) 「デフォルト設定」ボタンがクリックされたときに設定される値。デフォルトはTrue。help_text: (オプション) 「ヘルプ」ボタンがクリックされたときに表示されるヘルプテキスト。Noneの場合、f"help_{varname}"が使用されます。button1_args: (オプション) 最初の追加ボタンのキーワード引数。commandとして'set_default'または'show_help'を指定可能。button2_args: (オプション) 2番目の追加ボタンのキーワード引数。commandとして'set_default'または'show_help'を指定可能。onvalue: (オプション) チェックされたときにvariableに設定される値。デフォルトはTrue。offvalue: (オプション) チェックが外されたときにvariableに設定される値。デフォルトはFalse。igridrow: (オプション) グリッドレイアウトを使用する場合の行インデックス。
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)動作: アプリケーションの設定値に基づいた変数入力ウィジェット(Entry、Spinbox、Combobox)を作成します。
app.tkvarsに管理されるtkinter.StringVar、IntVar、DoubleVarに関連付けられた入力フィールドと、オプションで「デフォルト設定」ボタン、「ヘルプ」ボタンを配置します。引数:
app: アプリケーションのインスタンス。cparams: 設定パラメータを保持するオブジェクト。tkvars: Tkinter変数を管理する辞書またはオブジェクト。parent: ウィジェットを配置する親ウィジェット。grid_frame: ウィジェットを配置するグリッドフレーム。varname: (オプション) Tkinter変数の名前(キー)。デフォルトは'none'。vartype: (オプション) 変数の型 ('int', 'str', 'double', 'float')。デフォルトは'int'。label: (オプション) ウィジェットのラベルテキスト。Noneの場合、varnameが使用されます。values: (オプション) Comboboxで使用する値のリスト。Noneの場合、EntryまたはSpinboxが使用されます。from_: (オプション) Spinboxの最小値。to: (オプション) Spinboxの最大値。デフォルトは100。increment: (オプション) Spinboxの増分値。デフォルトは10。box_width: (オプション) 入力フィールドの幅。デフォルトは6。defval: (オプション)tkvars[varname]の初期値。デフォルトは0。リストまたはタプルで設定オブジェクトとデフォルト値を指定することもできます。reset_val: (オプション) 「デフォルト設定」ボタンがクリックされたときに設定される値。Noneの場合、defvalが使用されます。help_text: (オプション) 「ヘルプ」ボタンがクリックされたときに表示されるヘルプテキスト。Noneの場合、f"help_{varname}"が使用されます。button1_args: (オプション) 最初の追加ボタンのキーワード引数。commandとして'set_default'または'show_help'を指定可能。button2_args: (オプション) 2番目の追加ボタンのキーワード引数。commandとして'set_default'または'show_help'を指定可能。igridrow: (オプション) グリッドレイアウトを使用する場合の行インデックス。
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を内部的に利用し、パス変数、ファイル選択ダイアログ、外部エディタ/ビューアでの開く機能、シェル実行機能などを組み合わせてパス管理UIを生成します。app.tkvarsにtkinter.StringVarを登録します。引数:
app: アプリケーションのインスタンス。cparams: 設定パラメータを保持するオブジェクト。parent: フレームの親ウィジェット。grid_frame: フレームを配置するグリッドフレーム。tkvar: Tkinter変数を管理する辞書またはオブジェクト。varname: Tkinter変数の名前(キー)。file_type: (オプション) ファイル選択ダイアログに表示するファイルタイプのリスト。working_dir: (オプション) コマンドを実行する際の作業ディレクトリ。パスが空の場合、varnameのパスから自動的に設定されます。open_command: (オプション) ファイル選択ボタンが押されたときに実行されるカスタムコマンド。post_open_command: (オプション) ファイル選択後に追加で実行されるカスタムコマンド。head_label_width: (オプション) 先頭ラベルの幅。entry_width: (オプション) 入力フィールドの幅。button_width: (オプション) 参照ボタンの幅。button_args: (オプション) 参照ボタンのキーワード引数。copy_button_args: (オプション) コピーボタンのキーワード引数。edit_button_width: (オプション) 編集ボタンの幅。edit_button_args: (オプション) 編集ボタンのキーワード引数。shell_button_width: (オプション) シェルボタンの幅。optionmenu_width: (オプション) オプションメニューの幅。font_size: (オプション) フォントサイズ。is_print: (オプション) デバッグ情報を出力するかどうか。igridrow: (オプション) グリッドレイアウトを使用する場合の行インデックス。
Editor(app, parent = None, frame_args = {}, head_label_args = {}, entry_args = {}, tail_label_args = None, button_args = {}, eval_button_args = None, **kwargs)動作: パス入力フィールドとテキストエリアを組み合わせた簡単なエディタウィジェットを作成します。
PathFrameとtkinter.Textを組み合わせて、ファイルパスの指定、外部ツールでの編集、テキストエリアでの内容表示・編集を可能にします。テキストエリアには右クリックメニューも実装されています。引数:
app: アプリケーションのインスタンス。parent: (オプション) エディタウィジェットの親。frame_args: (オプション) 全体を囲むフレームのキーワード引数。head_label_args: (オプション) PathFrameの先頭ラベルのキーワード引数。entry_args: (オプション) PathFrameの入力フィールドのキーワード引数。tail_label_args: (オプション) PathFrameの末尾ラベルのキーワード引数。button_args: (オプション) PathFrameのファイル参照ボタンのキーワード引数。eval_button_args: (オプション) PathFrameのシェル実行ボタンのキーワード引数。**kwargs:tkinter.Textウィジェットに渡される追加のキーワード引数。
戻り値: 作成されたエディタフレームウィジェット (
tkinter.Frame)。
クラス
class tkScrolledListbox(tkinter.Listbox)動作: スクロールバー付きのTkinterリストボックスウィジェットです。
tkinter.Listboxとtkinter.Scrollbarを組み合わせて、リストの内容が多い場合でもスクロールして表示できるようにします。__init__(self, master, **key): tkScrolledListboxウィジェットを初期化します。master: リストボックスを配置する親ウィジェット。**key:tkinter.Listboxに渡される追加のキーワード引数。
clear(self): リストボックスの内容をクリアします。
class tkEntry(tkinter.ttk.Entry)動作: 右クリックメニュー(カット、コピー、ペーストなど)が組み込まれたTkinterのエントリウィジェットです。
tkinter.ttk.Entryを継承し、右クリック時に標準的なテキスト編集操作(カット、コピー、ペースト、削除、すべて選択)を提供するコンテキストメニューを表示します。__init__(self, parent = None, app = None, **kwargs): tkEntryウィジェットを初期化します。parent: (オプション) エントリウィジェットの親。app: (オプション) アプリケーションのインスタンス。メニューの親ウィンドウとして使用されます。**kwargs:tkinter.ttk.Entryに渡される追加のキーワード引数。
class tkSpinbox(tkinter.Spinbox)動作: 右クリックメニュー(カット、コピー、ペーストなど)が組み込まれたTkinterのSpinboxウィジェットです。
tkinter.Spinboxを継承し、右クリック時に標準的なテキスト編集操作(カット、コピー、ペースト、削除、すべて選択)を提供するコンテキストメニューを表示します。__init__(self, parent = None, app = None, **kwargs): tkSpinboxウィジェットを初期化します。parent: (オプション) Spinboxウィジェットの親。app: (オプション) アプリケーションのインスタンス。メニューの親ウィンドウとして使用されます。**kwargs:tkinter.Spinboxに渡される追加のキーワード引数。
class tkButton(tkinter.Button)動作: テキストの内容に応じて外観を変化させるTkinterのカスタムボタンウィジェットです。
tkinter.Buttonを継承し、set_textメソッドでボタンのテキストを設定する際に、特定のプレフィックス(!!!)があれば取り消し線と赤色で表示し、それ以外は標準的な外観に戻します。__init__(self, master, app, **kwargs): tkButtonウィジェットを初期化します。master: ボタンを配置する親ウィジェット。app: アプリケーションのインスタンス。テキストの国際化処理に使用されます。**kwargs:tkinter.Buttonに渡される追加のキーワード引数。fontはデフォルト設定の復元に使用されます。
set_text(self, caption): ボタンのテキストを設定し、内容に基づいてスタイルを調整します。テキストが"!!! "で始まる場合、取り消し線と赤色フォントを適用します。それ以外の場合は、標準のフォントスタイルに戻します。また、app.p()を介してテキストの国際化処理を行います。caption: ボタンに表示するテキスト。
get_text(self): ボタンの現在のテキストを取得します。戻り値: ボタンに表示されているテキスト (
str)。
class tkSetupDialog(tkinter.simpledialog.Dialog)動作: アプリケーションの設定を行うためのカスタムダイアログボックスです。外部エディタのパス、Pythonインタープリタのパス、シェル、ファイルマネージャー、VESTAなどのパス設定や、終了時の確認、デバッグモードなどのブール値設定を行うための入力フィールドとチェックボックスを生成します。
widgets引数で表示する設定項目を制御します。__init__(self, master, app = None, title = None, entry_width = 30, button_width = 4, edit_button_width = 2, shell_button_width = 2, widgets = 'enditor_path|confirm_on_exit|debug_mode', font_size = 10, is_print = False): tkSetupDialogを初期化します。master: ダイアログの親ウィジェット。app: (オプション) アプリケーションのインスタンス。設定値の取得と保存、外部アプリケーションパスの取得に使用されます。title: (オプション) ダイアログのタイトル。entry_width: (オプション) 入力フィールドの幅。デフォルトは30。button_width: (オプション) パス参照ボタンの幅。デフォルトは4。edit_button_width: (オプション) 編集/実行ボタンの幅。デフォルトは2。shell_button_width: (オプション) シェルボタンの幅。デフォルトは2。widgets: (オプション) ダイアログに表示するウィジェットをカンマ区切りで指定する文字列。デフォルトは'enditor_path|confirm_on_exit|debug_mode'。font_size: (オプション) ウィジェットのフォントサイズ。デフォルトは10。is_print: (オプション) デバッグ情報を出力するかどうか。デフォルトはFalse。
body(self, master): ダイアログの本体部分にウィジェットを生成します。設定項目に応じて、PathFrameやCheckButtonを配置します。buttonbox(self): ダイアログの下部にあるOK/キャンセルボタンボックスを生成します。switchButtonState(self): Applyボタンの状態を切り替えます(無効/有効)。apply(self): ダイアログが閉じられた後に、変更された設定値をアプリケーションのconfigparamsに適用します。
class tkdialog_yesno(tkinter.simpledialog.Dialog)動作: 「はい」/「いいえ」ボタンを持つシンプルなカスタムダイアログです。指定されたメッセージを表示し、ユーザーに「はい」または「いいえ」を選択させます。結果は
self.retに保存されます。__init__(self, master, title = None, message = None, width = 80): tkdialog_yesnoを初期化します。master: ダイアログの親ウィジェット。title: (オプション) ダイアログのタイトル。message: (オプション) ダイアログに表示するメッセージ。width: (オプション) メッセージ表示領域の幅。デフォルトは80。
body(self, master): ダイアログの本体部分にメッセージラベルを生成します。buttonbox(self): ダイアログの下部にある「はい」/「いいえ」ボタンボックスを生成します。
class tkCustomDialog_by_config(tkinter.simpledialog.Dialog)動作: 設定オブジェクトに基づいて動的にウィジェットを生成するカスタムダイアログです。外部から渡された設定オブジェクト(ウィジェットのタイプ、変数名、引数などを含むリスト)を解析し、タブ、ラベル、フレーム、ボタン、エントリ、テキスト、チェックボックス、リストボックス、コンボボックス、ラジオボタン、Spinbox、ファイル/ディレクトリ選択ウィジェットなどを動的に作成して配置します。
__init__(self, master, app = None, title = None, config = None, buttons = None, modeless = False, callback = None, is_print = False): tkCustomDialog_by_configを初期化します。master: ダイアログの親ウィジェット。app: (オプション) アプリケーションのインスタンス。変数の管理や翻訳、コマンド実行などに使用されます。title: (オプション) ダイアログのタイトル。config: (オプション) ウィジェット構成を定義するオブジェクトのリスト。各オブジェクトはwidgetタイプ、var名、args(キーワード引数)、vars(値のリスト)などを含む。buttons: (オプション) ダイアログに表示するボタンの種類(例: "okcancel", "yesno", "close")。デフォルトは"okcancel"。modeless: (オプション) ダイアログをモーダルとして開くか(Trueでモデルレス)。デフォルトはFalse。callback: (オプション) ダイアログが閉じられた後に呼び出されるコールバック関数。is_print: (オプション) デバッグ情報を出力するかどうか。デフォルトはFalse。
body(self, master): ダイアログの本体部分にウィジェットを生成します。設定オブジェクトself.configに基づいて、内部ヘルパー関数add_widgetを呼び出して各ウィジェットを動的に配置します。buttonbox(self): ダイアログの下部にあるボタンボックスを生成します。self.buttonsの設定に基づいて、「OK」、「キャンセル」、「はい」、「いいえ」、「閉じる」ボタンを配置します。update_vars(self): ダイアログ内のウィジェットの現在の値を取得し、self.retに格納します。apply(self): ダイアログが閉じられた後に、ウィジェットの現在の値をself.retに格納します。
class tkSelectDialog(tkinter.simpledialog.Dialog)動作: 選択肢のリストから項目を選択させるカスタムダイアログです。メッセージとスクロール可能なリストボックスを表示し、ユーザーがリストから1つまたは複数の項目を選択できるようにします。
__init__(self, master, app = None, title = None, varname = None, message = "", options = [], width = 30, height = 5, def_index = None, is_print = False): tkSelectDialogを初期化します。master: ダイアログの親ウィジェット。app: (オプション) アプリケーションのインスタンス。title: (オプション) ダイアログのタイトル。varname: (オプション) 現在使用されていません。message: (オプション) ダイアログに表示するメッセージ。options: (オプション) リストボックスに表示する選択肢のリスト。width: (オプション) リストボックスの幅。デフォルトは30。height: (オプション) リストボックスの高さ。デフォルトは5。def_index: (オプション) デフォルトで選択される項目のインデックス。is_print: (オプション) デバッグ情報を出力するかどうか。デフォルトはFalse。
body(self, master): ダイアログの本体部分にメッセージラベルとスクロールリストボックスを生成します。apply(self): ダイアログが閉じられた後に、選択されたリストボックスの項目をself.retに格納します。
class tkInputDialog(tkinter.simpledialog.Dialog)動作: テキスト入力を求めるカスタムダイアログです。メッセージと複数行入力可能なテキストエリアを表示し、ユーザーにテキストを入力させます。
__init__(self, master, app = None, title = None, message = '', width = 30, height = 10, def_val = '', is_print = False): tkInputDialogを初期化します。master: ダイアログの親ウィジェット。app: (オプション) アプリケーションのインスタンス。title: (オプション) ダイアログのタイトル。message: (オプション) ダイアログに表示するメッセージ。width: (オプション) テキストエリアの幅。デフォルトは30。height: (オプション) テキストエリアの高さ。デフォルトは10。def_val: (オプション) テキストエリアの初期値。デフォルトは空文字列。is_print: (オプション) デバッグ情報を出力するかどうか。デフォルトはFalse。
body(self, master): ダイアログの本体部分にメッセージラベルとテキストエリアを生成します。apply(self): ダイアログが閉じられた後に、テキストエリアの入力内容をself.retに格納します。
main scriptとして実行したときの動作
tktkinter.py は、if __name__ == '__main__': ブロックを持たないため、このファイルを直接Pythonインタープリタで実行しても、特定の動作は定義されていません。このファイルは、他のPythonプログラムからインポートされて利用されることを前提としたライブラリです。