tkinterでメモ帳を作成【第2回】~テキストを保存しよう~

Python
田中太郎
田中太郎

tkinterでメモ帳を作成します。

前回

tkinterを使ってメモ帳を作成しました。

今回はテキストボックスに書いた内容を保存します。

サマリ

tkinterを使ってメモ帳を作成する。

テキストボックスの内容をファイルに保存する。

搭載する機能

・テキストを入力

・名前を付けて保存

サンプルコード

notepad.py
import tkinter as tk
import tkinter.filedialog

root = tk.Tk()

# テキストボックスを作成する
text_widget = tk.Text(root, wrap=tk.CHAR)
text_widget.grid(column=0, row=0, sticky=(tk.N, tk.S, tk.E, tk.W))

# テキストボックスの大きさを可変にする
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)

def save_file_as(event=None):
    """名前を付けて保存する"""
    f_type = [('Text', '*.txt')]

    file_path = tkinter.filedialog.asksaveasfilename(
        filetypes=f_type)

    if file_path != "":
        with open(file_path, "w") as f:
            f.write(text_widget.get("1.0", "end-1c"))

    return

root.bind('<Control-KeyPress-s>', save_file_as)

# タイトルとかを設定
root.title("Notepad")
root.geometry("500x250")
root.mainloop()

説明

def save_file_as(event=None)
def save_file_as(event=None):
    """名前を付けて保存する"""
    f_type = [('Text', '*.txt')]

    file_path = tkinter.filedialog.asksaveasfilename(
        filetypes=f_type)

    if file_path != "":
        with open(file_path, "w") as f:
            f.write(text_widget.get("1.0", "end-1c"))

    return

テキストボックスにあるテキストをファイルとして保存する関数。

tkinter.filedialog.asksavesfilename()

filetypes で保存するファイルの拡張子を指定します。

text_widget.get(“1.0”, “end-1c”)

“1.0” 1行目の0文字目から取得を開始します。

“1.1” にすれば、1行名の1文字目から取得します。

“end-1c” 最終文字-1文字までを取得します。tkinterでは、最終文字に改行が挿入されています。

なので”end” にすると、入力したテキスト+改行が取得されるので-1c(1 char)しています。

root.bind(‘<Control-KeyPress-s>’, save_file_as)

ctrl+s を入力するとsave_file_asの関数が呼び出されます。

よって、ctrl+sを入力することで内容をファイルに保存するメモ帳を作成できました。

まとめ

今回はメモ帳にファイル保存の機能を搭載しました。

次回、さらに機能を拡張していきます。

コメント

タイトルとURLをコピーしました