Tkinterでテキストボックスの内容を読み込み・保存する方法
Tkinterアプリケーションでテキストボックス(Textウィジェット)の内容をファイルに保存したり、逆にファイルから読み込んで表示したりする方法を解説します。以下の手順に従って実装できます。
実装の流れ
tkinterフレームのインスタンスを作成します。
win.geometry メソッドを使ってウィンドウのサイズを設定します。
ユーザー定義メソッド open_text を定義し、テキストファイルを 「読み取りモード」 で開きます。ファイルの内容を変数 content に格納した後、insert メソッドを使ってその内容をテキストボックスに挿入します。
次に、もう一つのユーザー定義メソッド save_text を定義します。この中では write メソッドを使って、テキストボックスの内容をテキストファイルに書き込みます。
Textメソッドで高さ(height)と幅(width)を指定してテキストウィジェットを作成します。
open_text メソッドを呼び出すためのボタンを作成します。
save_text メソッドを呼び出すための保存用ボタンも作成します。
最後に、アプリケーションウィンドウの mainloop を実行します。
サンプルコード
# tkinterライブラリをインポート
from tkinter import *
# tkinterウィンドウのインスタンスを作成
win = Tk()
win.geometry("700x250")
def open_text():
text_file = open("test.txt", "r")
content = text_file.read()
my_text_box.insert(END, content)
text_file.close()
def save_text():
text_file = open("test.txt", "w")
text_file.write(my_text_box.get(1.0, END))
text_file.close()
# テキストボックスウィジェットを作成
my_text_box = Text(win, height=10, width=40)
my_text_box.pack()
# ファイルを開くためのボタンを作成
open_btn = Button(win, text="Open Text File", command=open_text)
open_btn.pack()
# テキストを保存するためのボタンを作成
save = Button(win, text="Save File", command=save_text)
save.pack()
win.mainloop()
実行結果
コードを実行すると、次のような画面が表示されます。

ここで 「Open Text File」 ボタンをクリックすると、テキストファイル test.txt が開かれ、その内容がテキストボックスに表示されます。

続いて、テキストボックス内に新しい行を入力し、「Save File」 ボタンをクリックすると、内容が test.txt に上書き保存されます。

ポイントのまとめ
ファイルから読み込む際は
open("test.txt", "r")のように読み取りモードを指定し、読み終わったら必ずclose()で閉じましょう。テキストボックスの全内容を取得するには
get(1.0, END)を使用します。「1.0」は先頭行の先頭文字位置を表します。保存時は書き込みモード
"w"を指定すると、既存の内容は新しい内容で置き換えられます。追記したい場合は"a"モードを使用してください。
-
Tkinterでテキストウィジェットを読み取り専用(無効化)にする方法
Tkinterでは、テキストウィジェットを無効化(disabled)したいケースがあります。これを実現するには、テキストウィジェットの state オプションを DISABLED に設定します。こうすることでテキストウィジェットがフリーズし、読み取り専用の状態になります。この記事では、テキストウィジェットとボタンを作成し、ボタンをクリックするとテキストウィジェットを即座に無効化できるサンプルを紹介します。コード例# ライブラリのインポート from tkinter import * # ウィンドウのインスタンスを作成 win = Tk() # ウィンドウのサイズを設定 win.geomet
-
【Python】Tkinterでテキストボックス(テキストウィジェット)の内容を削除する方法
Tkinterには、ボタン、ダイアログボックス、各種ウィジェットなど、本格的なGUIアプリケーションを構築するための豊富な関数やモジュールが用意されています。複数行のテキストを扱えるテキストウィジェットを作成するには、Textウィジェットを使用します。これはコンストラクタとして機能し、親となるウィンドウやフレームを指定して呼び出します。作成したテキストウィジェットの内容を削除するには、組み込みメソッドdelete(first, last=None)を使います。このメソッドは、削除対象となる範囲(開始位置と終了位置)を引数として受け取ります。この記事では、クリックするとテキストボックス内の内容を