ここではTkinterにおける「ScrolledText」の使用例をまとめています。
この記事の対象
ScrolledTextとは?
「ScrolledText」はスクロールできるテキスト入力のウィジェットになります。
アプリのサイズを限定したい場合で、文字列が入りきらない場合に使用します。
基本的な型
scrolledtext.ScrolledText(option)
「ScrolledText」はサイズや色などもオプションで指定できる特徴があります。良く使用するオプションは以下になります。
Option | 内容 |
bg | テキストボックスの背景色指定 |
bd | 枠線サイズの指定 |
blockcursor | 点滅カーソルの見た目指定。True,Falseを指定 |
borderwidth | 境界線の指定。数値を指定 |
cursor | マウスカーソルの指定。種類はこちら |
endline | 最終行の指定。数値を指定 |
exportselection | 真偽値を取る。 |
fg | 入力文字列の色指定 |
font | テキストのフォントタイプ・サイズの指定 |
justify | 入力位置指定。デフォルトはleft。center、rightも選択可能。 |
insertontime / insertofftime | 入力画面で点滅するカーソルが消えてから表示されるまでの時間(ms)を指定。offはその逆時間。 |
relief | ボーダーデザインの指定。tk.RAISED、tk.SUNKEN、 tk.FLAT、 tk.RIDGE、 tk.GROOVE、 tk.SOLIDから選択可能。 |
state | 文字入力のnormal(編集有効)、disable(編集無効)、readonly(読取のみ)を指定 |
wrap | 折返し方法の指定。tk.CHAR(文字単位)、tk.WORD(単語単位)、tk.NONE(折返ししない)から選択可能。 |
ScrolledTextの作成
from tkinter import *
import tkinter as tk
from tkinter import scrolledtext
#1---画面生成
root = Tk()
root.title("Test")
root.configure()
root.geometry("640x395")
#2---scrolledtext作成
test = scrolledtext.ScrolledText(padx=20, pady=25, cursor='arrow', wrap=tk.WORD, font=('Helvetica', '12'))
text = "これはテストです。"
test.insert(tk.END,text)
test.pack(fill=tk.BOTH, expand=1)
root.mainloop()
「scrolledtext」はimportをする必要があります。画面を作成したら「scrolledtext.ScrolledText()」でボックスを作成するだけです。文字入力はinsertで可能です。
結果
ScrolledTextへの複数行の文字挿入
from tkinter import *
import tkinter as tk
from tkinter import scrolledtext
import socket
import subprocess
#1---画面生成
root = Tk()
root.title("Test")
root.configure()
root.geometry("640x395")
#2---entry作成
test = scrolledtext.ScrolledText(padx=20, pady=25, cursor='arrow', wrap=tk.WORD, font=('Helvetica', '12'))
data = subprocess.check_output(['ipconfig','/all']).decode('cp932').split('\n')
for item in data:
text = item.split('\r')[:-1]
test.insert(tk.END,'\n')
test.insert(tk.END,text)
test.pack(fill=tk.BOTH, expand=1)
root.mainloop()
複数行を挿入する例としてIP情報を取得して書き込むものになっています。複数行を書き込む場合、for構文でその都度、改行してinsertで書き込むのが手っ取り早いです。その際、insert位置は「tk.END」にする必要があります。
結果
ScrolledTextへのテキストファイルの出力
import tkinter as tk
from tkinter.scrolledtext import ScrolledText
def display_text():
with open("files.txt", "r") as file:
text_output = file.read()
text_area.delete("1.0", tk.END)
text_area.insert(tk.END, text_output)
root = tk.Tk()
root.title("Viewer")
text_area = ScrolledText(root, width=80, height=20)
text_area.pack()
load_button = tk.Button(root, text="Load Text", command=display_text)
load_button.pack()
root.mainloop()
任意のテキストファイルを読み込んで、ScrolledTextに出力するコードになっています。