Tkinter Text

tkinter で複数行のテキストを扱うには Text ウィジェットを使います。

Tkinter Text

ここではこのスクリーンショットのように、スクロールバーの設定、及び、初期値の設定と現在の値の取得方法を示します。

スクロールバーについては、「Scrollbar と Listbox」も併せてみてください。

from tkinter import *
from tkinter import ttk
from tkinter.font import Font

root = Tk()
root.title('Text 1')
root.minsize(100, 100)
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)

# Frame
frame1 = ttk.Frame(root, padding=10)
frame1.rowconfigure(1, weight=1)
frame1.columnconfigure(0, weight=1)
frame1.grid(sticky=(N, W, S, E))

# Button
button1 = ttk.Button(
    frame1, text='OK',
    command=lambda: print('%s' % txt.get(1.0, END)))
button1.grid(
    row=0, column=0, columnspan=2, sticky=(N, E))

# Text
f = Font(family='Helvetica', size=16)
v1 = StringVar()
txt = Text(frame1, height=15, width=70)
txt.configure(font=f)
txt.insert(1.0, "Hello!")
txt.grid(row=1, column=0, sticky=(N, W, S, E))

# Scrollbar
scrollbar = ttk.Scrollbar(
    frame1,
    orient=VERTICAL,
    command=txt.yview)
txt['yscrollcommand'] = scrollbar.set
scrollbar.grid(row=1, column=1, sticky=(N, S))

root.mainloop()

必ずしも必要ではありませんが、ここでは Font も設定しています。

フォントは Text ウィジェットを作成した後、configure メソッドで Text に設定します。

スクロールバーについては、縦方向にスクロールできるようにしています。

Scrollbar の command に Text ウィジェットの yview メソッドを渡し、 さらに Text 側では yscrollcommand 属性に Scrollbar クラスの set メソッドをセットしています。

これだけで、自動的に必要に応じてスクロールバーが機能するようになります。

Text ウィジェットから文字を取得するには get メソッドで、 取得する文字の範囲を指定して取得します。また、文字をセットするには insert メソッドでセットする場所を指定して文字を挿入します。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Python 入門