今回やること
今回はwxPythonでウィンドウを作成し、ファイルの内容をテキストボックスへ入れる方法を紹介します。ファイルを開くダイアログを利用し、それをテキストボックスに表示させるということなので、
メモ帳に近い感じがします。今回の記事は前につくった記事と組み合わせて使うと、結構本格的なものになるので、
まだ見ていない人はぜひ見ていってください!!
wxPythonでシンプルなメモ帳を作成する
ソースコード
import wx
import sys
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,"ウィンドウタイトル",size=(500,300))
panel = wx.Panel(self,-1)
self.textctrl = wx.TextCtrl(panel,-1,style=wx.TE_MULTILINE)
sizer = wx.BoxSizer()
sizer.Add(self.textctrl,1,wx.EXPAND)
panel.SetSizer(sizer)
MBar = wx.MenuBar()
FileMenu = wx.Menu()
FileMenu.Append(0,"開く")
FileMenu.Append(1,"終了")
MBar.Append(FileMenu,"ファイル")
self.Bind(wx.EVT_MENU,self.SelectMenu)
self.SetMenuBar(MBar)
def SelectMenu(self,event):
ID = event.GetId()
if ID == 0:
dialog = wx.FileDialog(self,"ファイルを選択",wildcard="テキスト形式|*.txt|すべての形式|*.*",style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)
if dialog.ShowModal()==wx.ID_OK:
path = dialog.GetPath()
openfile = open(path,"r",encoding="UTF-8",errors="ignore")
self.textctrl.SetValue(openfile.read())
openfile.close()
elif ID == 1:
sys.exit()
app = wx.App(0)
MyFrame().Show(True)
app.MainLoop()
成功例
こんな感じで[開く]で選択したファイルに内容が表示されます
文字化けへの対処
このコードではBOM無しのUTF-8で開くようにしています。よって、それ以外の文字コードで保存されたファイルは文字化けされてしまいます。対処法として、文字コードを自動識別することがあげられます。文字コードを自動識別するための方法は結構前に投稿した記事にあります。
↓↓
Pythonでファイルを読み込む / 書き込む / エンコードを検出する
どうだったでしょうか。大事なことだったのでもう一度いいますね。
今回の記事は前につくった記事と組み合わせて使うと、結構本格的なものになるので、
まだ見ていない人はぜひ見ていってください!!
wxPythonでシンプルなメモ帳を作成する
動作環境:
Windows 10
64bit
Python 3.9.1
wxPython 4.1.1a1
コメント気軽にどうぞ!

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