今回の内容
テキストボックスを使ったサンプルを出していこうと思います。ユーザーから文字列を入力させてそれをつかうということですが、これには結構使うので
サンプルも結構だしておきたいと思います。
1. 入力された文字をメッセージボックスに表示
import wx def onButton(event=None): text = textctrl.GetValue() wx.MessageBox(text + "と入力されました","タイトル",wx.ICON_INFORMATION) app = wx.App(0) frame = wx.Frame(None,-1,"ウィンドウタイトル",size=(500,300)) panel = wx.Panel(frame,-1) textctrl = wx.TextCtrl(panel,-1,"",pos=(5,5),size=(200,-1)) button = wx.Button(panel,-1,"確認",pos=(5,50)) button.Bind(wx.EVT_BUTTON,onButton) frame.Show(True) app.MainLoop()
サンプル1の実行結果:
2.列と行をステータスバーに表示、メモ帳風
知ってましたか?行と列はGetPositionToXY(GetInsertionPoint())で取得できるんですよ!!今度記事で紹介したいと思います。
import wx def onChange(event): temp=textctrl.PositionToXY(textctrl.GetInsertionPoint()) frame.SetStatusText("行:"+str(temp[2]+1),1) frame.SetStatusText("列:"+str(temp[1]),2) app = wx.App(0) frame = wx.Frame(None,-1,"フレームタイトル") #↓ステータスバーを設置します frame.CreateStatusBar(3) frame.SetStatusText("行:1",1) frame.SetStatusText("列:0",2) #↓パネルではなく、Frameに直接設置することで、 #↓画面全体に引きのばされます。 textctrl = wx.TextCtrl(frame,-1,"",style=wx.TE_MULTILINE) textctrl.Bind(wx.EVT_TEXT,onChange) frame.Show(True) app.MainLoop()
サンプル2の実行結果:
3.太字 斜め の設定
import wx def onCheck1(event): font = textctrl.GetFont() size = font.GetPointSize() weight = font.GetWeight() italic = font.GetStyle() if checkbox.GetValue(): textctrl.SetFont(wx.Font(size,wx.FONTFAMILY_DEFAULT,wx.FONTSTYLE_ITALIC,weight,faceName="メイリオ")) elif checkbox.GetValue()==False: textctrl.SetFont(wx.Font(size,wx.FONTFAMILY_DEFAULT,wx.FONTSTYLE_NORMAL,weight,faceName="メイリオ")) def onCheck2(event): font = textctrl.GetFont() size = font.GetPointSize() weight = font.GetWeight() italic = font.GetStyle() if checkbox2.GetValue(): textctrl.SetFont(wx.Font(size,wx.FONTFAMILY_DEFAULT,italic,wx.FONTWEIGHT_BOLD,faceName="メイリオ")) elif checkbox2.GetValue()==False: textctrl.SetFont(wx.Font(size,wx.FONTFAMILY_DEFAULT,italic,wx.FONTWEIGHT_NORMAL,faceName="メイリオ")) app = wx.App(0) frame = wx.Frame(None,-1,"ウィンドウタイトル",size=(400,200)) panel = wx.Panel(frame,-1) textctrl = wx.TextCtrl(panel,-1,"",size=(300,-1),pos=(5,5)) checkbox = wx.CheckBox(panel,-1,"斜め文字",pos=(5,40)) checkbox.Bind(wx.EVT_CHECKBOX,onCheck1) checkbox2 = wx.CheckBox(panel,-1,"太文字",pos=(5,80)) checkbox2.Bind(wx.EVT_CHECKBOX,onCheck2) frame.Show(True) app.MainLoop()サンプル3の実行結果:
4.ファイル選択ダイアログからテキストを入れる
import wx def onButton(event=None): dialog = wx.FileDialog(frame,"ファイルを選択してください",wildcard="テキストファイル|*.txt|すべての形式|*.*",style=wx.FD_OPEN|wx.FD_FILE_MUST_EXIST) if dialog.ShowModal()==wx.ID_OK: path = dialog.GetPath() textctrl.SetValue(path) dialog.Destroy() app = wx.App(0) frame = wx.Frame(None,-1,"ウィンドウタイトル",size=(500,300)) panel = wx.Panel(frame,-1) textctrl = wx.TextCtrl(panel,-1,"".pos=(5,5),size=(300,-1)) button = wx.Button(panel,-1,"...",pos=(320,5),size=(20,-1)) button.Bind(wx.EVT_BUTTON,onButton) frame.Show(True) app.MainLoop()
実行結果:
5.パスワード入力用
この例ではパスワードをpasswordにしています。import wx import sys #アプリを完全に終了するために def onButton1(event): text = textctrl.GetValue() if text == "password": wx.MessageBox("成功です","成功") else: wx.MessageBox("パスワードが一致しません。","エラー",wx.ICON_ERROR) def onButton2(event): sys.exit() app = wx.App(0) frame = wx.Frame(None,-1,"パスワードを入力",size=(410,130)) panel = wx.Panel(frame,-1) textctrl = wx.TextCtrl(panel,-1,"",pos=(5,5),size=(380,-1),style=wx.TE_PASSWORD) button1 = wx.Button(panel,-1,"確認",pos=(300,60)) button2 = wx.Button(panel,-1,"キャンセル",pos=(220,60)) button1.Bind(wx.EVT_BUTTON,onButton1) button2.Bind(wx.EVT_BUTTON,onButton2) frame.Show(True) app.MainLoop()実行結果:
6.文字よせの設定
import wx app = wx.App(0) frame = wx.Frame(None, -1, "ウィンドウタイトル~", size=(400, 200)) panel = wx.Panel(frame, -1) text1 = wx.TextCtrl(panel, -1,"デフォルト") text2 = wx.TextCtrl(panel, -1, "左寄せ", style=wx.TE_LEFT) text3 = wx.TextCtrl(panel, -1, "中央寄せ", style=wx.TE_CENTER) text4 = wx.TextCtrl(panel, -1, "右寄せ", style=wx.TE_RIGHT) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(text1, flag=wx.GROW) sizer.Add(text2, flag=wx.GROW) sizer.Add(text3, flag=wx.GROW) sizer.Add(text4, flag=wx.GROW) panel.SetSizer(sizer) frame.Show(True) app.MainLoop()
Windows 11がデベロッパーリリースしました。当ブログではWindows11で実行することを前提に記事を書くことは今の時点ではないです。
引き続き動作環境はWindows10のみとします。
おすすめ記事:
Python - wxPythonでテトリスを作成する方法!
今のバージョンでも実行できるように改善!
今のバージョンでも実行できるように改善!
wxPythonのTextCtrlで一部の
文字の色を変更 / 文字を強調
文字の色を変更 / 文字を強調
動作環境:
Windows 10
64bit
Python 3.9.1
wxPython 4.1.1a1
コメント、シェア、気軽にどうぞ!!!
wxPythonの今スグ使えるサンプル集18個!GUI開発をマスターしよう!
今回はwxPythonのサンプルを18個紹介したいと思います。
wxPythonはウィジェットが豊富で自由度が高いので、応用するといろいろなツールが作成できます。
wxPythonの他のサンプルは、
返信削除こちらからどうぞ。