• 検索結果がありません。

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 GUI プログラミング tkinter グラフィックス テキスト (Text) ウィジェット 複数行のテキストを扱うには Text ウィジェットを使用する エントリーウィジェットがラインエディタとするならば テキストウィジェットはスクリーンエ

N/A
N/A
Protected

Academic year: 2021

シェア "PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 GUI プログラミング tkinter グラフィックス テキスト (Text) ウィジェット 複数行のテキストを扱うには Text ウィジェットを使用する エントリーウィジェットがラインエディタとするならば テキストウィジェットはスクリーンエ"

Copied!
11
0
0

読み込み中.... (全文を見る)

全文

(1)

■ GUI プログラミング ■ § tkinter グラフィックス § ■ テキスト(Text)ウィジェット 複数行のテキストを扱うには、Text ウィジェットを使用する。エントリーウィジェットがラインエディ タとするならば、テキストウィジェットはスクリーンエディタに相当し、柔軟で高度なテキスト編集を 行う事が出来る。 テキストウィジェットには標準動作が用意されて居り、其れ丈でテキスト編集が可能で有る。マウスの 操作は、左クリックでカーソル位置の変更、ドラッグで範囲の選択、ダブルクリックで単語の選択が行 え、トリプルクリックで行の選択、ドラッグで文字列の選択が出来る。 テキストを生成する書式は、下記の通りで有る。 PYTHON3

widget = Text (parent, option=value, ...)

※ コンストラクタは、新しい Text オブジェクトを返す。 上記に於けるオプションは、下記の通りで有る。 オプション 説明 autoseparators 挿入や削除毎にセパレータをアンドゥスタックに自動的に追加するか何う かを指定する(値 True で自動追加)。 bd 又は borderwidth 外枠の幅を指定する(既定値は 2 ピクセル)。 bg 又は background 通常の背景色を指定する。 cursor ボタン上に来た時に使用するカーソルを指定する。 exportselection テキスト選択時は自動的にクリップボードに送る(値 0 で送らない)。 fg 又は foreground 既定の文字(とビットマップ)の色を指定する。 font テキストの既定のフォントを指定する。 height 高さをテキストの行で指定する。 highlightbackground フォーカスを得て居ない時のフォーカスハイライトの色を指定する。 highlightcolor フォーカスを得て居る時のフォーカスハイライトの色を指定する。 highlightthickness フォーカスハイライトの太さを指定する。 insertbackground 挿入カーソルの色を指定する(既定値は黒)。 insertborderwidth 挿入カーソルのレリーフ形式を指定する(既定値は 0)。 insertofftime 挿入カーソルのブリンク消灯間隔をミリ秒で指定する(既定値は 300)。 insertontime 挿入カーソルのブリンク点灯間隔をミリ秒で指定する(既定値は 600)。 insertwidth 挿入カーソルの幅を指定する(既定値は 2 ピクセル)。 maxundo アンドゥの最大数を指定する(値-1 で無制限)。 padx 左右のパディングを指定する。 pady 上下のパディングを指定する。 relief レリーフ形式を指定する(既定値は SUNKEN)。 selectbackground 選択されて居るテキストの背景色を指定する。

P

P

Y

Y

T

T

H

H

O

O

N

N

(2)

selectborderwidth 選択されて居るテキストの外枠の太さを指定する。 selectforeground 選択されて居るテキストの前景色を指定する。 spacing1 行の上のスペース追加分を指定する(既定値は 0)。 spacing2 行間のスペース追加分を指定する(既定値は 0)。 spacing3 行の下のスペース追加分を指定する(既定値は 0)。 state 状態を指定する(既定値は NORMAL)。 NORMAL:通常 DISABLED:操作不能 tabs タブ位置を指定する。 takefocus フォーカス取得フラグを指定する(値 0 でフォーカスを取得しなく成る)。 undo アンドゥ利用フラグを指定する(値 False で利用不可)。 width 幅を文字数で指定する。 wrap ワードラップの方法を指定する。 CHAR:文字単位 WORD:単語単位 NONE:ワードラップ無し(スクロールバーと併用) xscrollcommand 水平方向のスクロールメソッドを指定する。 yscrollcommand 垂直方向のスクロールメソッドを指定する。 下記に、テキストウィジェットのメソッドを示す。 メソッド 意味 bbox(index) 引数 index で指定した文字を囲む矩形を返す。 戻り値は 4 要素のタプル (x, y, width, height) で返される。 但し、update_idletasks メソッドを呼び出さない限り、此のメソッ ドは正確な値を返さない事が有る。

compare(index1, op, index2) 引数 index1 と index2 が示す位置を比較する。

引数 op は、'<'、'<='、'=='、'!='、'>='、'>' の孰れかの比較演算子。 例えば、compare('2.0', '<=', END) は、2 行目の始まりがテキスト の末尾以前で有れば、True を返す。

delete(index1, index2=None) 引数 index1 の直後から引数 index2 の直前迄を削除する。

引数 index2 を省略すると引数 index1 の直後の 1 文字を削除する。 dlineinfo(index) 引数 index を含む行を囲む矩形を返す。 edit_modified(arg=None) ウィジェットの内容が変更されたか何うかを追跡する為に使用され る変更フラグを照会、設定、消去する。例えば、テキストウィジェ ットを使用してテキストエディタを作成した場合、変更フラグを使 用して、最後にコンテンツをファイルに保存した時からコンテンツ が変更されたか何うかを判断する事が出来る。 引数無しで呼び出された場合、此のメソッドは変更フラグが設定さ れて居る場合は True を返し、クリアされて居る場合は False を返 す。此のメソッドに True を渡す事で、変更フラグを明示的に設定 する事も、False 値を渡してクリアする事も出来る。 プログラムからの操作、ユーザーの操作、アンドゥやリドゥの操作 の孰れでも、テキストを挿入したり削除する操作は総て、変更フラ グを設定する。 edit_redo() リドゥ(遣り直し)操作を実行する。 edit_reset() アンドゥ(元に戻す)スタックをクリアする。 edit_separator() セパレータをアンドゥ(元に戻す)スタックにプッシュする。此の セパレータは、セパレータがプッシュされた後にプッシュされた変 更而巳を含む様に、其の後のアンドゥ操作の範囲を制限する。

(3)

edit_undo() 最後にセパレータがアンドゥスタックにプッシュされた後や、スタ ックにセパレータが含まれて居ない場合はスタックの最後に移動し てからのウィジェットのコンテンツに対する総ての変更を元に戻 す。アンドゥスタックが空の場合はエラーに成る。 image_create( index[, option=value, ...]) イメージをウィジェットに挿入する。イメージは、サイズがイメー ジの本来のサイズで有る別の文字として扱われる。 此のメソッドのオプションを下記の表に示す。複数の option = value 引数、又は、オプション名と値のディクショナリーを渡す事 が出来る。 align 画像の高さが其の行の高さよりも小さい場合に、画 像を垂直方向に何の様に整列させるかを指定する。 'top':上揃え 'center':中央揃え 'bottom':下揃え image 使用するイメージを指定する。 name イメージのインスタンスの名前を指定する。 padx 左右のパディングを指定する。 pady 上下のパディングを指定する。 get(index1, index2=None) ウィジェットから現在のテキストを取得する。開始位置は引数 index1 で指定する。引数 index2 が省略された場合は、引数 index1 の後の文字が、亦、指定された場合は、2 個の引数の間のテキスト が取得される。埋め込み画像とウィンドウ(ウィジェット)は無視 される。範囲に複数の行が含まれる場合、改行( '¥n' )文字で区 切られる。 image_cget(index, option) 埋め込みイメージに設定されて居るオプションの値を取得する。 image_configure( index, option, ...) 埋め込みイメージに 1 個以上のオプションを設定する。 引数 index:イメージを指すインデックス 引数 option:option = value(複数可) 猶、オプションを指定しない場合は、イメージの総てのオプション を定義した辞書と其れに対応する値が返される。 image_names() 総ての埋め込み画像の名前のタプルを返す。 index(i) 引数 i の位置を 'line.char' の形式で返す。

insert(index, text, tags=None) 引数 index の位置に引数 text のテキストを挿入する。

引数 tags を省略すると、新しく挿入されたテキストには、挿入ポイ ントの前後に有る文字に適用されて居るタグがタグ付けされる。 挿入するテキストに 1 個以上のタグを適用する場合は、3 番目の引 数としてタグ文字列のタプルを指定する。挿入ポイントの周囲の既 存の文字に適用されるタグは総て無視される。猶、3 番目の引数は タプルでなければ成らない。リスト引数を指定すると、タグの自動 適用に失敗し、文字列を指定すると、各文字はタグとして扱われる。 mark_gravity( mark, gravity=None) 既存のマークのグラビティの変更や照会を行う。 グラビティを設定するには、マークの名前を入力し、続いて LEFT か RIGHT を入力する。既存のマークのグラビティを参照するには、 2 番目の引数を省略して呼び出すと、LEFT か RIGHT を返す。 mark_names() INSERT や CURRENT を含む、ウィンドウ内の総てのマークの名

前のシーケンスを返す。

mark_next(index) 引数 index の後のマークの名前を返す。後にマークが無い場合、空 の文字列を返す。

引数 index が数値形式の場合、メソッドは其の位置の最初のマーク を返し、引数 index がマークの場合、次のマークを返す。

(4)

mark_previous(index) 引数 index の前のマークの名前を返す。前にマークが無い場合、空 の文字列を返す。

引数 index が数値形式の場合、メソッドは其の位置の最後のマーク を返し、引数 index がマークの場合、前のマークを返す。

mark_set(mark, index) 引数 mark のマークが存在しない場合は、RIGHT グラビティで作 成され、引数 index の位置に配置される。マークが既に存在する場 合は、其のマークが引数 index の場所に移動される。 此のメソッドは、INSERT や CURRENT インデックスの位置を変 更する事が有る。 mark_unset(mark) 引数 mark で指定されたマークを削除する。但し、此のメソッドを 使用して INSERT や CURRENT マークを削除する事は出来ない。 scan_dragto(x, y) コンテンツの高速スキャンを設定する。※1 scan_mark(x, y) コンテンツの高速スキャンを設定する。※1 search(

pattern, index, option, ...)

引数 index から始まるバッファ内の引数 pattern(文字列か正規表 現の孰れか)を検索する。検索に成功すると、'line.char' 形式のイ ンデックスを返し、失敗した場合は、空の文字列を返す。

此のメソッドで使用出来るオプションは下記の通りで有る。 backwards True なら、引数 index から後方に検索する。 count IntVar コントロール変数に設定すると、get メソッ

ドでテキストの長さを取得出来る。

exact True なら、パターンに正確に一致するテキストを 検索する(既定)。

forwards True なら、引数 index から前方に検索する(既定)。 regexp True なら、パターンを Tcl スタイルの正規表現と して解釈する。 nocase True なら、大文字小文字を無視する。 stopindex 検索を制限するには、此のオプションを検索の対象 外のインデックスに設定する。 see(index) 引数 index の項目が見える様に位置を調整する。 tag_add(tagName, index1, index2=None) 引数 tagName と謂う名前のタグを、引数 index1 の直後から引数 index2 迄のコンテンツの領域に関連付ける。引数 index2 を省略す ると、引数 index1 の後の文字而巳がタグ付けされる。 tag_bind( tagName, sequence, func, add=None) 引数 tagName でタグ付けされた総てのテキストにイベントをバイ ンドする。 タグ付きテキストの新しいバインディングを作成するには、最初の 3 個の引数を使用する。引数 sequence にはイベントを識別する種類 を、引数 func にはイベントが発生した時に呼び出す関数を指定す る。 亦、タグ付きテキストに別のバインディングを追加するには、最初 の 3 個の引数に、4 番目の引数 '+' を加える。 タグのシーケンスに付けられたバインディングの存在を調べるに は、最初の 2 個の引数丈を渡すと、関連する関数が返される。 特定のタグに付けられた総てのバインディングを検索するには、最 初の引数丈を渡すと、総てのタグのシーケンス引数のリストが返さ れる。

tag_cget(tagName, option) 引数 tagName の指定されたオプション値を取得する。 tag_config(

tagName, option, ...)

引数 tagName の指定されたオプションの値を変更する。

引数 option には、複数の option = value のペアを渡す事が出来る。 引数 tagName 丈を渡すと、指定されたタグに対して現在有効な総 てのオプションと其の値を定義したディクショナリーが返される。

(5)

タグ設定のオプションは下記の通りで有る。 background テキストの背景色(略語 bg は使用不可) bgstipple 背景用の標準ビットマップ borderwidth 境界線の幅(既定値は 0) fgstipple テキスト用の標準ビットマップ font テキスト表示用のフォント foreground テキストの前景色(略語 fg は使用不可) justify 行揃え(既定値は LEFT) LEFT:左揃え CENTER:中央揃え RIGHT:右揃え lmargin1 行頭インデント(既定値は 0) lmargin2 ぶら下がりインデント(既定値は 0) offset ベースラインに対するテキスト位置の増分 正の値:上に移動(上付き文字) 負の値:下に移動(下付き文字) overstrike 1 なら、取り消し線 relief 3-D 効果(既定値は FLAT) rmargin 右余白のサイズ(既定値は 0) spacing1 行の上のスペース追加分(既定値は 0) spacing2 行間のスペース追加分(既定値は 0) spacing3 行の下のスペース追加分(既定値は 0) tabs タブ位置 underline 1 なら、下線 wrap ワードラップ tag_delete(tagName, ...) 引数 tagName で指定したタグを削除する(複数可)。 tag_lower( tagName, belowThis=None) スタック内のタグの順序を変更する。 引数 tagName は、引数 belowThis の直ぐ下の位置に移動する。引 数 tagName 丈を渡すと、其のタグはスタックの末尾に移動する。 tag_names(index=None) 引数 index の後の文字に関連付けられて居る総てのタグ名のシーケ ンスが返される。引数を省略すると、テキストウィジェットで定義 された総てのタグ名のシーケンスが返される。 tag_nextrange( tagName, index1, index2=None) 引数 tagName で始まる領域を検索する。検索される領域は、引数 index1 から始まり、後方に進み、引数 index2 で終わる。引数 index2 を省略すると、検索はテキストの末尾迄行われる。 指定された領域に其のタグが始まる領域が有る場合、シーケンス [i0、i1] が返される。此の i0 は最初のタグ付き文字のインデックス で、i1 は最後のタグ付き文字の直後の位置のインデックスで有る。 猶、タグの開始が領域内に見付からない場合、メソッドは空の文字 列を返す。 tag_prevrange( tagName, index1, index2=None) 引数 tagName で始まる領域を検索する。検索される領域は、引数 index1 から始まり、前方に進み、引数 index2 で終わる。引数 index2 を省略すると、検索はテキストの先頭迄行われる。 戻り値は tag_nextrange メソッドに同じ。 tag_raise( tagName, aboveThis=None) スタック内のタグの順序を変更する。 引数 tagName は、引数 aboveThis の直ぐ上の位置に移動する。引 数 tagName 丈を渡すと、其のタグはスタックの先頭に移動する。 tag_ranges(tagName) 引数 tagName でタグ付けされた総てのテキストの範囲を見付け、 シーケンス [s0、e0、s1、e1、...] を返す。各 si は範囲の最初の文 字の直前を指し、ei は範囲の最後の文字の直後を指す。

(6)

tag_remove( tagName, index1, index2=None)

引数 index1 と引数 index2 の間の総ての文字から引数 tagName を 削除する。引数 index2 を省略すると、引数 index1 の後の 1 文字か ら後ろのタグが削除される。 tag_unbind( tagName, sequence, funcid=None) 引数 tagName から、指定されたシーケンスのイベント・バインデ ィングを削除する。此のシーケンスとタグに複数のハンドラが有る 場合は、ハンドラを引数 funcid として渡す事でハンドラを 1 個丈削 除する事が出来る。

window_cget(index, option) 引数 index に有る埋め込みウィジェットの引数 option で指定された オプションの値を返す。 window_configure( index, option) 引数 index に有る埋め込みウィジェットの引数 option で指定された オプションの値を option = value のペアで設定する(複数可)。 引数 index 丈渡すと、指定されたウィジェットに対して現在有効な 総てのオプションと其の値を定義するディクショナリが返される。 window_create( index, option, ...) テキストウィジェット内にウィジェットを埋め込む事が出来るウィ ンドウを作成する。埋め込みウィジェットを提供する方法には 2 種 の方法が有る。 此のメソッドでウィジェットを window オプションに渡す方法 ウィジェットを作成するプロシージャを定義し、其のプロシージャ をコールバックとして create オプションに渡す方法 window_create メソッドのオプションは下記の通りで有る。 align 埋め込まれたウィジェットの行内の垂直方向の位置を 指定する(行内のテキストの高さと同じでない場合)。 値には以下の物が有る(既定値は CENTER)。 CENTER:中央 TOP:画像の上端を其の行の上端に置く BOTTOM:画像の下端を線の下端に置く BASELINE:画像の下端をテキストのベースラインに 揃える create 埋め込みウィジェットを作成するプロシージャを指定 する。此のプロシージャは引数を取らず、ウィジェッ トをテキストウィジェットの子として作成し、結果と してウィジェットを返す必要が有る。 padx 左右のパディングを指定する。 pady 上下のパディングを指定する。 stretch 1 なら、ウィジェットは行の高さを埋める様に垂直に 引き伸ばされ、align オプションは無視される(既定 値は 0)。 window 埋め込まれるウィジェットを指定する(此のウィジェ ットはテキストウィジェットの子でなければ成らな い)。 window_names() 総ての埋め込みウィジェットの名前を含むシーケンスを返す。 xview(MOVETO, fraction) 此のメソッドは、テキストウィジェットを水平方向にスクロールし、 連動する水平スクロールバーのコマンドオプションにバインドする 為の物で有る。 此のオーバーロードでは、値 0.0 がテキストの左端、1.0 が右端を 意味する引数 fraction で指定された位置にテキストが配置される。 xview(SCROLL, n, what) 此のオーバーロードでは、テキストを左か右に移動させる。引数

what は、UNITS か PAGES の孰れかで何れ丈移動するかを指定し、 引数 n は、テキストを画像に対して右に移動する文字数かページ数 を指定する(引数 n が負の場合は左)。

(7)

xview_moveto(fraction) 指定した fraction の位置の文字が左端に来る様に調整する。 引数の f はテキスト全体を基準にした位置で 0 から 1 の範囲。 0 はテキストの左端を意味し、1 は右端を意味する。 xview_scroll(number, what) 水平スクロールバーとの関連で使用する。 yview() 垂直スクロールバーとの関連で使用する。 yview_moveto(fraction) 指定した f(fraction)の位置の項目が上端に来る様に調整する。 引数の f はテキスト全体を基準にした位置で 0 から 1 の範囲。 0 はテキストの上端を意味し、1 は下端を意味する。 yview_scroll(number, what) 垂直スクロールバーとの関連で使用する。 ※1 此等のメソッドは、テキストウィジェットの高速スクロールを実装する為に使用される。一般的に は、ユーザは、ウィジェット内の或る位置でマウスボタンを押し乍、好きな方向にマウスを移動さ せると、ウィジェットは、ボタンが押されてからマウスが移動した距離に比例する速度で其の方向 に移動する。動作は、垂直スクロールや水平スクロールと組み合わせても良い。 此の機能を実装するには、マウスボタンの down イベントを scan_mark メソッドを呼び出すハン ドラにバインドする。此の時の引数 x と y は現在のマウスの位置で有る。次に、motion イベント を scan_dragto メソッドを呼び出すハンドラにバインドする。此の時の引数 x と y は新しいマウス 位置で有る。

ワードラップを設定するには、wrap オプションを使用する。char を指定すると文字の切れ目で、word を指定すると単語の切れ目でワードラップを行い、none を指定するとワードラップは行われない。

PYTHON3

from tkinter import * # ウィンドウを作成 root = Tk() # プログレスバーの値を格納 v1 = StringVar() # ボタンをクリックした時の処理 def btn_click():

print('TEXT = %s' % txt.get(1.0, END)) # ボタンの生成

btn = Button(root, text = 'GET', width = 10, command = btn_click) btn.grid(row = 0, column = 0, columnspan = 2, sticky = (N,E)) # テキストの生成

txt = Text(root)

txt.insert(1.0, "Hello!")

txt.grid(row = 1, column = 0, sticky = (N,W,S,E))

# スクロールバーの生成

bar = Scrollbar(root, orient = VERTICAL, command = txt.yview) txt['yscrollcommand'] = bar.set

bar.grid(row = 1, column = 1, sticky = (N,S)) # メインループ

(8)

テキストウィジェットは、リストボックスと同様に、スクロールバーと組み合わせて表示範囲を変更す る事が出来る。上記では、縦方向にスクロール出来る様に、スクロールバーを設定して居る。スクロー ルバーの command オプションにテキストウィジェットの yview メソッドを、更に、テキストウィジェ ット側では、yscrollcommand オプションにスクロールバーの set メソッドを設定すると、自動的に必 要に応じてスクロールバーが機能する様に成る。 テキストウィジェットには、文字列の挿入、削除、検索と謂うテキストエディタとして必要なメソッド が多数用意されて居る。例えば、テキストウィジェットから文字を取得するには、get メソッドで、取 得する文字の範囲を指定して取得する。亦、文字を挿入するには、insert メソッドで挿入する場所を指 定して文字を挿入する。 多くのメソッドで位置の指定が必要に成る。基本的な指定方法を下記に示す。 基本指定法 説明 N.M N 行の M 文字目 @x,y テキスト内の (x,y) の位置に有る文字 end テキスト末尾 マーク名 其の名前のマークを付けた位置 タグ名.first 其の名前のタグの最初の位置 タグ名.last 其の名前のタグの最後の位置 猶、テキストウィジェットでは、行は 1 から数えるが、文字は 0 から数える。 亦、上記の基本指定に加えて、下記に示す相対指定を組み合わせる事が出来る。 相対指定法 説明 +Nchars, -Nchars 其処から N 文字先、手前 +Nlines, -Nlines 其処から N 行先、手前 linestart, lineend 其の行の先頭、末尾 wordstart, wordend 其の単語の先頭、末尾 下記に、テキストファイルを読み込んで、テキストウィジェットに表示するコードを示す。 PYTHON3

from tkinter import *

from tkinter import filedialog from tkinter import scrolledtext import sys, os.path

# ウィンドウを作成 root = Tk() # グローバル変数 path_name = "" # テキストの生成 txt = scrolledtext.ScrolledText() txt.pack() # ファイルを読み込む関数 def load_file(): global path_name

(9)

filename = filedialog.askopenfilename(filetypes = [('Text Files', ('.txt', '.py'))], initialdir = path_name) if filename != "": path_name = os.path.dirname(filename) fp = open(filename) txt.delete('1.0', 'end') for x in fp: txt.insert('end', x) fp.close() txt.focus_set() # メニューの生成 mnu = Menu(root); root.configure(menu = mnu); mnufile = Menu(mnu, tearoff = 0)

mnufile.add_command(label = 'Open', under = 0, command = load_file) mnufile.add_separator

mnufile.add_command(label = 'Exit', under = 0, command = sys.exit) mnu.add_cascade(label = 'File', under = 0, menu = mnufile )

# メインループ root.mainloop() マーク マークはテキストの位置を表す名前の事で有る。マークは文字自体に付けられるのではなく、文字と文 字の間に設定される。テキストを操作するメソッドでは、位置の指定にマークを使う事も出来る。 マークを操作する主なメソッドを下記に示す。 メソッド 説明 mark_set(markname, index) マークを設定する。 mark_unset(*markname) マークを削除する。 mark_names() 定義されて居る総てのマークを返す。 mark_gravity(markname, left_or_right) マークの付き方を left と right で指定する。 mark_next(index) index より後ろに有るマークを返す mark_previous(index) index より前に有るマークを返す マークの設定は、mark_set メソッドで行う。マークは、指定した位置の文字と其の前の文字の間に設 定される。例えば、'1.3' と指定すると、1 行目の 2 文字目と 3 文字目の間にマークが設定される(文字 は 0 から数える)。具体例を示すと、テキストウィジェットの 1 行目に abcdefg と記述されて居る状態 で、下記の様に first と謂う名前のマークを設定する。 PYTHON3 txt.mark_set(first, '1.3') 上記の変数 txt は、テキストウィジェットのオブジェクトで有る。此れで、マーク first は 1 行目の 2 文字目(c)と 3 文字目(d)の間に設定される。此の状態で 1 行目の先頭文字 a を削除すると文字 d は 2 文字目に成るので、first の位置は 1.3 ではなく 1.2 に変わる。亦、行頭に文字 A を挿入すれば d は 4 文字目に成るので、first は 1.3 から 1.4 に変わる。此の様に指定した文字 d が移動すれば、其の文字と 共にマークも移動する。

(10)

マークの位置に文字列を挿入する場合、マークは挿入した文字列の左右孰れかに付く。mark_gravity メソッドは、マーク位置に文字列を挿入した時の新たなマークの付き方を指定する。left で有れば挿入 した文字列の左側に、right で有れば挿入した文字列の右側にマークが設定される。例えば、first の位 置に文字列 1234 を挿入するには、下記の様にする。 PYTHON3 txt.insert(first, '1234') 現在の first の位置が c と d の間で有れば、文字列は abc1234defg と成る。此の時、マークが挿入した 文字列の左側に付く場合は、c と 1 の間にマークが設定される。逆に、右側に付く場合は 4 と d の間に 設定される。デフォルトの設定は、right なので、此処で今一度 first に文字列 5678 を挿入すると、文 字列は abc12345678defg と成る。 亦、特別なマークとして、キャレット位置を表す insert と、マウスカーソルが指す文字位置を表す current が有る。例えば、キャレットの位置に文字列を挿入する場合は、下記の様にする。 PYTHON3 txt.insert(insert, 'string') タグ テキストウィジェットのタグは、キャンバスウィジェットのタグと同様に、指定した文字列に名前(タ グ名)を付ける機能で有る。更に、タグ毎にフォントや色等の表示属性やバインディングを設定する事 が出来る。此の機能に依り、テキストウィジェットは単なるテキスト編集丈ではなく、或る単語をクリ ックすれば、別のテキストを表示すると謂う様なハイパーテキストを構成する事も出来る。 タグを操作するメソッドは多数用意されて居り、タグの設定、削除、検索と謂う基本的な機能の他にも、 オプションやバインディングの設定を行う事が出来る。フォント、色、アンダーライン等の表示属性は オプションで設定する。タグに関する主要なメソッドを下記に示す。 メソッド 説明

tag_add(tagname, index1, index2) 指定した範囲に対して、タグ tagname を設定する。 tag_delete(*tagname) タグを削除する。

tag_names(index) index の位置に有る文字と関連する総てのタグを返す。 tag_cget(tagname, option) タグ tagname のオプションの値を返す。

tag_configure(tagname, option, value) タグ tagname のオプションを設定する。 tag_bind(tagname, event, callback) タグ tagname にバインドを設定する。 埋め込みウィンドウ

テキストウィジェットは、キャンバスウィジェットと同様に、テキスト丈ではなく、他のウィジェット も表示する事が出来る。此れを埋め込みウィンドウと謂う。埋め込みウィンドウ用のメソッドを下記に 示す。

メソッド 説明

window_create(index, option = value, ...) window オプションで指定したウィジェットを表示す る。

window_names() テキストウィジェットに表示されて居る他のウィジェッ トをリストで返す。

window_configure(index, option = value) 位置 index に有るウィジェットのオプションを設定す る。

window_cget(index, option) 位置 index に有るウィジェットのオプションの値を取得 する。

(11)

window_create メソッドで使用するオプションを下記に示す。

オプション 説明

window ウィジェット名

create ウィジェットを生成するコマンドを指定(window を指

定しない場合而巳有効)

align 上下方向の揃え指定(baseline, top, bottom, center)

stretch 上下方向の引き伸ばし padx, pady スペースの指定 埋め込み画像 テキストウィジェットに画像を表示する丈ならば、画像専用のメソッドを使用する事も出来る。此れ埋 め込み画像と謂う。埋め込み画像用のメソッドを下記に示す。 メソッド 説明

image_create(index, option = value, ... ) オプション image で指定した画像を表示する。

image_names() テキストウィジェットに表示されて居る画像をリストで 返す。

image_configure(index, option = value) 位置 index に有る画像のオプションを設定する。 image_cget(index, option) 位置 index に有る画像のオプションの値を取得する。 image_create メソッド で使用するオプションを下記示す。

オプション 説明

image 表示する画像

name 画像を参照する為の名前

align 上下方向の揃え指定(baseline, top, bottom, center)

padx, pady スペースの指定

■ Python GUI ドキュメント

日本語:https://docs.python.jp/3/library/tkinter.html

参照

関連したドキュメント

2021] .さらに対応するプログラミング言語も作

テューリングは、数学者が紙と鉛筆を用いて計算を行う過程を極限まで抽象化することに よりテューリング機械の定義に到達した。

事業セグメントごとの資本コスト(WACC)を算定するためには、BS を作成後、まず株

4)線大地間 TNR が機器ケースにアースされている場合は、A に漏電遮断器を使用するか又は、C に TNR

クチャになった.各NFは複数のNF  ServiceのAPI を提供しNFの処理を行う.UDM(Unified  Data  Management) *11 を例にとれば,UDMがNF  Service

Bluetooth® Low Energy プロトコルスタック GUI ツールは、Microsoft Visual Studio 2012 でビルドされた C++アプリケーションです。GUI

・カメラには、日付 / 時刻などの設定を保持するためのリチ ウム充電池が内蔵されています。カメラにバッテリーを入

・電源投入直後の MPIO は出力状態に設定されているため全ての S/PDIF 信号を入力する前に MPSEL レジスタで MPIO を入力状態に設定する必要がある。MPSEL