今回やること
wxPythonで超シンプルなメモ帳を開発します。メニューバー、テキストボックスのみ使い、あとは
ファイルダイアログを利用して名前を付けて保存ダイアログで保存します。
是非ご覧ください!! 700ビュー!wxPythonで普通に使えるメモ帳ソフトを作ってみた。
コードの書き方
ここ見るのめんどくさいって方は、ここの「コードの書き方」をスキップして、次の「ソースコード」に移動しちゃってください
----ではまず、必要なライブラリをインポートします。
import wx import sys
wxは今回のメインなので必須で、sysはアプリを完全に終了するために必要なものです。
次に普通にFrameを作成しましょう。
class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self,None,-1,"メモ帳",size=(800,500))
そして、パネルとテキストボックスを配置します。
panel = wx.Panel(self,-1) self.text = wx.TextCtrl(panel,-1,"",style=wx.TE_MULTILINE)
TE_MULTILINEは、複数行入力を可能にするという意味です。
次にBoxSizerにアイテムを追加して、TextCtrlを全体にひきのばします。
sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self.text,1,wx.EXPAND) panel.SetSizer(sizer)
そしたら、メニューバーの作成です。
MBar = wx.MenuBar() FileMenu = wx.Menu() FileMenu.Append(0,"保存 (&S)") FileMenu.AppendSeparator() FileMenu.Append(1,"終了 (&X)") MBar.Append(FileMenu,"ファイル (&F)") self.SetMenuBar(MBar) self.Bind(wx.EVT_MENU,self.SelectMenu)
んで、メニューバーがクリックされたときの動作を追加します。
def SelectMenu(self,event): ID = event.GetId() if ID==0: #保存メニューがクリックされたら... #ダイアログを表示させて保存 FileD = wx.FileDialog(self,"ファイルを保存",wildcard="全ての形式 | *.*",style=wx.FD_SAVE| wx.FD_OVERWRITE_PROMPT) if FileD.ShowModal() == wx.ID_OK: #[保存]がクリックされたら... OpenFile = open(FileD.GetPath(),"w") #ファイルに書き込む OpenFile.write(self.text.GetValue()) OpenFile.close() elif ID==1: sys.exit()
そしたら、後はこれです↓
if __name__ == "__main__": Ap = wx.App(False) MyFrame().Show(True) Ap.MainLoop()
ソースコード
import wx import sys class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self,None,-1,"メモ帳",size=(800,500)) panel = wx.Panel(self,-1) self.text = wx.TextCtrl(panel,-1,"",style=wx.TE_MULTILINE) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self.text,1,wx.EXPAND) panel.SetSizer(sizer) MBar = wx.MenuBar() FileMenu = wx.Menu() FileMenu.Append(0,"保存 (&S)") FileMenu.AppendSeparator() FileMenu.Append(1,"終了 (&X)") MBar.Append(FileMenu,"ファイル (&F)") self.SetMenuBar(MBar) self.Bind(wx.EVT_MENU,self.SelectMenu) def SelectMenu(self,event): ID = event.GetId() if ID==0: #保存メニューがクリックされたら... #ダイアログを表示させて保存 FileD = wx.FileDialog(self,"ファイルを保存",wildcard="全ての形式 | *.*",style=wx.FD_SAVE| wx.FD_OVERWRITE_PROMPT) if FileD.ShowModal() == wx.ID_OK: #[保存]がクリックされたら... OpenFile = open(FileD.GetPath(),"w") #ファイルに書き込む OpenFile.write(self.text.GetValue()) OpenFile.close() elif ID==1: sys.exit() if __name__ == "__main__": Ap = wx.App(False) MyFrame().Show(True) Ap.MainLoop()
TextCtrlのカスタマイズ
wx.TextCtrlのサンプルは別の記事で紹介しておりますので、そちらもぜひご覧ください!!TextCtrlを右揃えにしたり、フォントを変更したり、色を変更したり...のカスタマイズできます。
右揃え、中央揃え、左揃え
左揃えは標準だから、いいとしてまずは中央揃えです。
以下のように変更してください。
self.text = wx.TextCtrl(panel,-1,"",style=wx.TE_MULTILINE | wx.TE_CENTER)
ってことは右揃えは...以下のようになります。
self.text = wx.TextCtrl(panel,-1,"",style=wx.TE_MULTILINE | wx.TE_RIGHT)
フォントを変更する
フォントを変更するためには、TextCtrlを生成した後に、以下のコードを追加する必要があります。
self.text.SetFont(wx.Font(12,wx.FONTFAMILY_DEFAULT,wx.FONTSTYLE_NORMAL,wx.FONTWEIGHT_BOLD,faceName="メイリオ"))
TextCtrlにフォントを設定するにはwx.Fontを使います。最初の「12」はサイズを指定しています。次の「wx.FONTFAMILY_DEFAULT」はフォントファミリーを指定しています。
あまり、よくわかりませんが、DEFAULTにしときます。
「FONTSTYLE_NORMAL」は文字を斜めにするかでうかです。斜めにするには、「wx.FONTSTYLE_ITALIC」に変更します。
「wx.FONTWEIGHT_BOLD」は太字にするかどうかです。今の設定では太字にしている設定です。もとに戻すには、「wx.FONTWEIGHT_NORMAL」に変えてください。
「faceName="メイリオ"」はフォントの名前を指定しています。個人的にメイリオが日本語でもいい感じに表示されるのでお気に入りです。
色を変更する
色を変更するには、TextCtrlを生成した後に、SetBackgroundColour()やSetForegroundColour()を使います。
self.text.SetBackgroundColour("black") #背景色の設定。今回は黒色 self.text.SetForegroundColour("green") #文字色の設定。今回は緑色
動作環境
・Windows10
・64bit
・Python 3.9.1
・wxPython 4.1.1a1
wxPythonの今スグ使えるサンプル集18個!GUI開発をマスターしよう!
今回はwxPythonのサンプルを18個紹介したいと思います。
wxPythonはウィジェットが豊富で自由度が高いので、応用するといろいろなツールが作成できます。
当ブログを閲覧していただきありがとうございます。
返信削除こちらの記事もおすすめです。↓↓
https://programming-self-study.blogspot.com/2021/06/wxpython-filem.html
ファイルマネージャーを作ってみました。
ぜひご覧ください。