スグできる!Tkinterでシンプルなメモ帳(テキストエディタ)を作成!

2021年8月5日木曜日

Python tkinter

t f B! P L

今回の内容

このブログで「wxPythonでシンプルなメモ帳を作成する」という記事がありますが、それがとても人気であったので、
Tkinterでもつくっていきたいと思います。内容はファイルの名前を付けて保存に加えて、ファイルを開くというのもやりたいと思います。

前準備

その前に、文字コードを自動識別するライブラリをpip からインストールする必要があります。
事前にインストールしてください。
pip install chardet

ソースコード

import tkinter as tk
import tkinter.filedialog as filedialog
import chardet

#各イベントの設定
def onOpen():
    #「開く」イベント
    dialog = filedialog.askopenfilename(filetypes=[("All Files","*.*")])
    if len(dialog) != 0:
        #文字コードを自動識別して読み取るコード
        FILENAME = dialog
        tmp = open(FILENAME,"rb")
        encode = chardet.detect(tmp.read())["encoding"]
        tmp.close()
        file = open(FILENAME,"r",encoding=encode,errors="ignore")
        text = file.read()
        file.close()
        #一度文字を全て削除してから挿入する
        textbox.delete("1.0",tk.END)
        textbox.insert("1.0",text)
        
def onSave():
    #「保存」するイベント
    dialog = filedialog.asksaveasfilename(filetypes=[("All Files","*.*")])
    if len(dialog) != 0:
        file = open(dialog,"w",encoding="UTF-8",errors="ignore")
        file.write(textbox.get("1.0",tk.END))
        file.close()
        
def onExit():
    #「終了」するイベント
    root.destroy()
        

root = tk.Tk()
root.title("シンプルなメモ帳")

#wpap=tk.NONEで、折り返しをオフにできる。
textbox = tk.Text(root,wrap = tk.NONE) 

#スクロールバーの設定
yscroll = tk.Scrollbar(root, orient=tk.VERTICAL, command=textbox.yview)
yscroll.pack(side=tk.RIGHT, fill="y")
xscroll = tk.Scrollbar(root, orient=tk.HORIZONTAL, command=textbox.xview)
xscroll.pack(side=tk.BOTTOM, fill="x")

textbox["yscrollcommand"] = yscroll.set
textbox["xscrollcommand"] = xscroll.set
textbox.pack(fill=tk.BOTH)

#メニューバーの設定
FileMenu = tk.Menu(tearoff=0)
FileMenu.add_command(label="開く",command=onOpen)
FileMenu.add_command(label="保存",command=onSave)
FileMenu.add_separator()
FileMenu.add_command(label="終了",command=onExit)

MenuBar = tk.Menu()
MenuBar.add_cascade(label="ファイル", menu=FileMenu)

root.config(menu=MenuBar)
root.mainloop()
Tkinterでシンプルなメモ帳 (テキストエディタ) を作成してみる!
wxPythonだと、スクロールバーの設定なんていらなかったのでtkinterだと少しコードが長くなってしまう。



今回はここまでにします。
コメント、要望、疑問、質問、など、気軽にどうぞ!

このブログを検索

要望について

ブログのレイアウトやテーマについての提案をいただきました。現在qooqテーマを適応中です。 語尾を自動でつけるプログラムを作りたいという要望をいただきました。是非紹介したいですがどの言語でどのようなプログラムかなど、お問い合わせフォームで詳しく教えてください!

最近の出来事

最近の出来事
寿司打お勧め75位♪(練習モードだけど)

アンケート

Welcome!

「プログラミング独学ブログ」へようこそ。 Yakinyといいます。幅広い範囲で投稿していますので、ぜひ過去の記事も見てみてください!!コメントも大歓迎です!更新がとまってしまって申し訳ございません

お問い合わせ

名前

メール *

メッセージ *

QooQ