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 メソッドでセットする場所を指定して文字を挿入します。