Textウィジェットを使ってみよう
今回はTextウィジェットを使って、文字入力フィールドを表示してみましょう。
Textウィジェットは複数行の文字列を入力するためのGUI部品です。
Textウィジェットの書式
Textウィジェットの使い方は、以下の通りです。
※ tkinterを別名でインポートした場合は、tkinterの部分を別名にしてください。
オブジェクト名 = tkinter.Text(master=親ウィジェット, オプション)
第1引数はTextウィジェットの親ウィジェットを指定します。
また、masterは省略することができます。
Textウィジェットで使うオプション
Textウィジェットで使う主なオプションは、以下の通りです。
オプション名 | 内容 |
font | 使用するフォント *1 |
fg/foreground | 文字の色 *2 |
bg/background | 背景の色 *2 |
width | 入力フィールドの幅。デフォルトは80 |
height | 入力フィールドの高さ。デフォルトは24 |
*1 指定できるフォントは、tkinter.font.families()で確認できます。
*2 色の指定にはred、green、blueなどのカラー名や先頭に#(シャープ)を付けた16進数が使えます。
Textウィジェットの内容を取得する
Textウィジェットの内容を取得するには、get()メソッドを使います。
オブジェクト名.get(開始位置, 終了位置)
開始位置と終了位置は数字で "行番号.列番号" を指定します。
行番号と列番号を .(ピリオド)でつなぎます。(ダブルクォーテーションは省略することができます)
行番号は1から始まり、列番号は0から始まります。
テキストフィールドの先頭は、"1.0" となります。
行末は".end"を使います。例えば、3行目の行末までの場合は "3.end" となります。
テキストフィールドの最後は "end" ですが、改行コードが含まれてしまうので、改行コードを含めたくない場合は "end-1chars"(省略して "end-1c" でも可)とします。
-1chars は、1キャラクター分後方に移動します。
5キャラクター分前方に移動する場合は、+5chars (or +5c) となります。
Textウィジェットを使ったプログラム
Textウィジェットを使ったプログラムは、以下のようになります。
テキスト、ボタン、ラベルを用意して、テキストフィールドに入力された内容をラベルに表示する関数をボタンに関連付けます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
### インポート import tkinter ### テキスト内容取得関数 def func(): value.set(text.get("1.0", "end-1c")) ### メイン画面作成 main = tkinter.Tk() ### 画面サイズ設定 main.geometry("640x400") ### ラベル表示変数 value = tkinter.StringVar() ### 入力フィールド作成 text = tkinter.Text(master=main, width=50, height=5) ### ボタン作成 button = tkinter.Button(master=main, text="Click", font=("HG丸ゴシックM-PRO",20), command=func) ### ラベル作成 label = tkinter.Label(master=main, textvariable=value, font=("HG丸ゴシックM-PRO",24), fg="blue") ### 入力フィールド配置 text.pack(pady=30) ### ボタン配置 button.pack(pady=10) ### ラベル配置 label.pack(pady=10) ### イベントループ main.mainloop() |
プログラムを実行すると、以下のような画面が表示されます。
Clickボタンを押下すると、ラベルにテキストフィールドの内容が表示されます。