今回の内容
このブログで「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 件のコメント:
コメントを投稿