wxPythonに限らず、全てのGUIアプリケーションにおいて使用頻度が高いであろうStaticTextの使用方法です。指定の文字列を表示する事が出来るので、表題や説明書きなどで幅広く活躍するでしょう。
基本的な使い方
パネルへStaticTextを追加しています。引数には(親ウィンドウ、識別子、ラベル)の順番で渡しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | import wx application = wx.App() frame = wx.Frame( None , wx.ID_ANY, 'テストフレーム' , size = ( 300 , 200 )) panel = wx.Panel(frame, wx.ID_ANY) panel.SetBackgroundColour( '#AFAFAF' ) s_text_1 = wx.StaticText(panel, wx.ID_ANY, 'テキスト1' ) s_text_2 = wx.StaticText(panel, wx.ID_ANY, 'テキスト2' ) s_text_3 = wx.StaticText(panel, wx.ID_ANY, 'テキスト3' ) s_text_4 = wx.StaticText(panel, wx.ID_ANY, 'テキスト4' ) s_text_5 = wx.StaticText(panel, wx.ID_ANY, 'テキスト5' ) layout = wx.BoxSizer(wx.VERTICAL) layout.Add(s_text_1) layout.Add(s_text_2) layout.Add(s_text_3) layout.Add(s_text_4) layout.Add(s_text_5) panel.SetSizer(layout) frame.Show() application.MainLoop() |
ラベル設定
先程のサンプルでは初期化時にラベル(StaticTextに表示される文字)を指定していました。 当然ラベルを変更するメソッドも用意されており、状況によって文字列を変更する事も可能です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import wx application = wx.App() frame = wx.Frame( None , wx.ID_ANY, 'テストフレーム' , size = ( 300 , 200 )) panel = wx.Panel(frame, wx.ID_ANY) panel.SetBackgroundColour( '#AFAFAF' ) s_text_1 = wx.StaticText(panel, wx.ID_ANY, 'テキスト1' ) s_text_2 = wx.StaticText(panel, wx.ID_ANY, 'テキスト2' ) s_text_3 = wx.StaticText(panel, wx.ID_ANY, 'テキスト3' ) s_text_4 = wx.StaticText(panel, wx.ID_ANY, 'テキスト4' ) s_text_5 = wx.StaticText(panel, wx.ID_ANY, 'テキスト5' ) s_text_3.SetLabel( 'Text3' ) layout = wx.BoxSizer(wx.VERTICAL) layout.Add(s_text_1) layout.Add(s_text_2) layout.Add(s_text_3) layout.Add(s_text_4) layout.Add(s_text_5) panel.SetSizer(layout) frame.Show() application.MainLoop() |
s_text_3のラベルがテキスト3ではなくText3となりました。
フォント設定
StaticTextのフォント(文字の大きさや太字設定)を変更するにはSetFontを使用します。15行目にて使用するFontクラスを初期化しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | import wx application = wx.App() frame = wx.Frame( None , wx.ID_ANY, 'テストフレーム' , size = ( 300 , 200 )) panel = wx.Panel(frame, wx.ID_ANY) panel.SetBackgroundColour( '#AFAFAF' ) s_text_1 = wx.StaticText(panel, wx.ID_ANY, 'テキスト1' ) s_text_2 = wx.StaticText(panel, wx.ID_ANY, 'テキスト2' ) s_text_3 = wx.StaticText(panel, wx.ID_ANY, 'テキスト3' ) s_text_4 = wx.StaticText(panel, wx.ID_ANY, 'テキスト4' ) s_text_5 = wx.StaticText(panel, wx.ID_ANY, 'テキスト5' ) font = wx.Font( 20 , wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL) s_text_3.SetFont(font) layout = wx.BoxSizer(wx.VERTICAL) layout.Add(s_text_1) layout.Add(s_text_2) layout.Add(s_text_3) layout.Add(s_text_4) layout.Add(s_text_5) panel.SetSizer(layout) frame.Show() application.MainLoop() |
テキスト3の文字の大きさを変更しました。
文字色設定
StaticTextの文字色の変更にはSetForegroundColourを使用します。サンプルでは黒(デフォルト色)から赤へ変更しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import wx application = wx.App() frame = wx.Frame( None , wx.ID_ANY, 'テストフレーム' , size = ( 300 , 200 )) panel = wx.Panel(frame, wx.ID_ANY) panel.SetBackgroundColour( '#AFAFAF' ) s_text_1 = wx.StaticText(panel, wx.ID_ANY, 'テキスト1' ) s_text_2 = wx.StaticText(panel, wx.ID_ANY, 'テキスト2' ) s_text_3 = wx.StaticText(panel, wx.ID_ANY, 'テキスト3' ) s_text_4 = wx.StaticText(panel, wx.ID_ANY, 'テキスト4' ) s_text_5 = wx.StaticText(panel, wx.ID_ANY, 'テキスト5' ) s_text_3.SetForegroundColour( '#FF0000' ) layout = wx.BoxSizer(wx.VERTICAL) layout.Add(s_text_1) layout.Add(s_text_2) layout.Add(s_text_3) layout.Add(s_text_4) layout.Add(s_text_5) panel.SetSizer(layout) frame.Show() application.MainLoop() |
テキスト3の文字色を赤へ変更しました。
背景色設定
StaticTextの背景色の変更はSetBackgroundColourを使用します。下記サンプルでは青へ変更しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import wx application = wx.App() frame = wx.Frame( None , wx.ID_ANY, 'テストフレーム' , size = ( 300 , 200 )) panel = wx.Panel(frame, wx.ID_ANY) panel.SetBackgroundColour( '#AFAFAF' ) s_text_1 = wx.StaticText(panel, wx.ID_ANY, 'テキスト1' ) s_text_2 = wx.StaticText(panel, wx.ID_ANY, 'テキスト2' ) s_text_3 = wx.StaticText(panel, wx.ID_ANY, 'テキスト3' ) s_text_4 = wx.StaticText(panel, wx.ID_ANY, 'テキスト4' ) s_text_5 = wx.StaticText(panel, wx.ID_ANY, 'テキスト5' ) s_text_3.SetBackgroundColour( '#0000FF' ) layout = wx.BoxSizer(wx.VERTICAL) layout.Add(s_text_1) layout.Add(s_text_2) layout.Add(s_text_3) layout.Add(s_text_4) layout.Add(s_text_5) panel.SetSizer(layout) frame.Show() application.MainLoop() |
テキスト3の背景色を青へ変更しました。
ツールチップ設定
StaticTextへツールチップ(補足情報を載せる小さいウィンドウ)を表示させるにはSetToolTipを使用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import wx application = wx.App() frame = wx.Frame( None , wx.ID_ANY, 'テストフレーム' , size = ( 300 , 200 )) panel = wx.Panel(frame, wx.ID_ANY) panel.SetBackgroundColour( '#AFAFAF' ) s_text_1 = wx.StaticText(panel, wx.ID_ANY, 'テキスト1' ) s_text_2 = wx.StaticText(panel, wx.ID_ANY, 'テキスト2' ) s_text_3 = wx.StaticText(panel, wx.ID_ANY, 'テキスト3' ) s_text_4 = wx.StaticText(panel, wx.ID_ANY, 'テキスト4' ) s_text_5 = wx.StaticText(panel, wx.ID_ANY, 'テキスト5' ) s_text_3.SetToolTip( 'python-izm.com' ) layout = wx.BoxSizer(wx.VERTICAL) layout.Add(s_text_1) layout.Add(s_text_2) layout.Add(s_text_3) layout.Add(s_text_4) layout.Add(s_text_5) panel.SetSizer(layout) frame.Show() application.MainLoop() |
テキスト3の上にマウスカーソルを載せると、メッセージが出るようになります。
表示・非表示設定
StaticTextを非表示にするにはHideを使用しましょう。非表示状態のStaticTextを表示させるにはShowを用います。なおStaticTextは「見えない」だけで本体は存在しています。非表示状態のStaticTextに対してラベル設定をしたりする事も可能です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | import wx application = wx.App() frame = wx.Frame( None , wx.ID_ANY, 'テストフレーム' , size = ( 300 , 200 )) panel = wx.Panel(frame, wx.ID_ANY) panel.SetBackgroundColour( '#AFAFAF' ) s_text_1 = wx.StaticText(panel, wx.ID_ANY, 'テキスト1' ) s_text_2 = wx.StaticText(panel, wx.ID_ANY, 'テキスト2' ) s_text_3 = wx.StaticText(panel, wx.ID_ANY, 'テキスト3' ) s_text_4 = wx.StaticText(panel, wx.ID_ANY, 'テキスト4' ) s_text_5 = wx.StaticText(panel, wx.ID_ANY, 'テキスト5' ) s_text_3.Hide() # s_text_3.Show() layout = wx.BoxSizer(wx.VERTICAL) layout.Add(s_text_1) layout.Add(s_text_2) layout.Add(s_text_3) layout.Add(s_text_4) layout.Add(s_text_5) panel.SetSizer(layout) frame.Show() application.MainLoop() |
テキスト3が隠れています。見えないだけなのでプログラム上で操作してもエラーとはなりません。
文字寄せ
文字列の左寄せ、右寄せ、中央寄せを設定するにはstyleを渡します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | import wx application = wx.App() frame = wx.Frame( None , wx.ID_ANY, 'テストフレーム' , size = ( 300 , 200 )) panel = wx.Panel(frame, wx.ID_ANY) panel.SetBackgroundColour( '#AFAFAF' ) s_text_1 = wx.StaticText(panel, wx.ID_ANY, 'テキスト1' ) s_text_2 = wx.StaticText(panel, wx.ID_ANY, 'テキスト2' ) s_text_3 = wx.StaticText(panel, wx.ID_ANY, 'テキスト3' , style = wx.TE_LEFT) s_text_4 = wx.StaticText(panel, wx.ID_ANY, 'テキスト4' , style = wx.TE_CENTER) s_text_5 = wx.StaticText(panel, wx.ID_ANY, 'テキスト5' , style = wx.TE_RIGHT) layout = wx.BoxSizer(wx.VERTICAL) layout.Add(s_text_1, flag = wx.GROW) layout.Add(s_text_2, flag = wx.GROW) layout.Add(s_text_3, flag = wx.GROW) layout.Add(s_text_4, flag = wx.GROW) layout.Add(s_text_5, flag = wx.GROW) panel.SetSizer(layout) frame.Show() application.MainLoop() |
テキスト3を左寄せ、テキスト4を中央寄せ、テキスト5を右寄せにしました。指定無しの場合はデフォルトで左寄せが適用されます。
レイアウトでの小技
空文字のStaticTextを用いてレイアウトの微調整を行う事が可能です。画面上では何も存在していないように見えるので、1行分空いているかのように配置されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | import wx application = wx.App() frame = wx.Frame( None , wx.ID_ANY, 'テストフレーム' , size = ( 300 , 200 )) panel = wx.Panel(frame, wx.ID_ANY) panel.SetBackgroundColour( '#AFAFAF' ) s_text_1 = wx.StaticText(panel, wx.ID_ANY, 'テキスト1' ) s_text_2 = wx.StaticText(panel, wx.ID_ANY, 'テキスト2' ) s_text_3 = wx.StaticText(panel, wx.ID_ANY, '') s_text_4 = wx.StaticText(panel, wx.ID_ANY, 'テキスト4' ) s_text_5 = wx.StaticText(panel, wx.ID_ANY, 'テキスト5' ) layout = wx.BoxSizer(wx.VERTICAL) layout.Add(s_text_1, flag = wx.GROW) layout.Add(s_text_2, flag = wx.GROW) layout.Add(s_text_3, flag = wx.GROW) layout.Add(s_text_4, flag = wx.GROW) layout.Add(s_text_5, flag = wx.GROW) panel.SetSizer(layout) frame.Show() application.MainLoop() |
テキスト2とテキスト4の間に空文字のStaticTextが入っています。