今回の内容
このブログで「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()
wxPythonだと、スクロールバーの設定なんていらなかったのでtkinterだと少しコードが長くなってしまう。今回はここまでにします。
コメント、要望、疑問、質問、など、気軽にどうぞ!
!

0 件のコメント:
コメントを投稿