こんにちは.これからwxPythonを使ってみる(4)について始めたいと思います.
対象や動作環境などのはじめに必要な情報はwxPythonを使ってみる(1) と同じになります.
また,今回の内容は前の3回のの続きとなります.是非読んで見てください.
特徴
前回では,Sizerを使ったレイアウトのitem引数とproportion引数について学びました.今回もSizerを使ったレイアウトの続きを学んで行きたいと思います.
今回はBoxSizerのflag引数について学びましょう.
flagはアイテムの配置設定とボーダー設定を行う引数です.
中央寄せ
BoxSizerにおける中央寄せで使用する定数は,以下の3つとなります.
- wx.ALIGN_CENTER(中央)
- wx.ALIGN_CENTER_VERTICAL(縦方向おける中央)
- wx.ALIGN_CENTER_HORIZONTAL(横方向おける中央)
import wx
class CustomFrame(wx.Frame):
def __init__(self,title):
wx.Frame.__init__(self,None,-1,title,size=(400,400))
panel = wx.Panel(self)
layout = wx.BoxSizer(wx.VERTICAL)
layout.Add(wx.Button(panel,wx.ID_ANY,"B01"),flag=wx.ALIGN_CENTER)
layout.Add(wx.Button(panel,wx.ID_ANY,"B02"),flag=wx.ALIGN_CENTER_VERTICAL)
layout.Add(wx.Button(panel,wx.ID_ANY,"B03"),flag=wx.ALIGN_CENTER_HORIZONTAL)
panel.SetSizer(layout)
self.Show()
app = wx.App(False)
CustomFrame("BoxSizer")
app.MainLoop()
ソースコードwindow_display08.pyは,wx.VERTICAL
を使っているため,縦方向のBoxSizerは次の図の配置となります.
ここではwx.ALIGN_CENTER
とwx.ALIGN_CENTER_HORIZONTAL
が同じ配置となっています.
理由は,wx.ALIGN_CENTER
の縦スペースがないため,wx.ALIGN_CENTER_HORIZONTAL
と同じ横方向の中央寄せてなります.
先程のソースコードwindow_display08.pyのlayout = wx.BoxSizer(wx.VERTICAL)
の部分をlayout = wx.BoxSizer(wx.HORIZONTAL)
を変更すると,縦方向から横方向のBoxSizerでは次のような配置となります.
今回は,wx.ALIGN_CENTER
の横スペースがないため,wx.ALIGN_CENTER_VERTICAL
と同じ縦方向の中央寄せてなります.
上下左右寄せ
BoxSizerにおける上下左右寄せで使用する定数は,以下の4つとなります.
- wx.ALIGN_TOP(上寄せ)
- wx.ALIGN_BOTTOM(下寄せ)
- wx.ALIGN_LEFT(左寄せ)
- wx.ALIGN_RIGHT(右寄せ)
import wx
class CustomFrame(wx.Frame):
def __init__(self,title):
wx.Frame.__init__(self,None,-1,title,size=(400,400))
panel = wx.Panel(self)
layout = wx.BoxSizer(wx.VERTICAL)
layout.Add(wx.Button(panel,wx.ID_ANY,"B01"),flag=wx.ALIGN_TOP)
layout.Add(wx.Button(panel,wx.ID_ANY,"B02"),flag=wx.ALIGN_BOTTOM)
layout.Add(wx.Button(panel,wx.ID_ANY,"B03"),flag=wx.ALIGN_LEFT)
layout.Add(wx.Button(panel,wx.ID_ANY,"B04"),flag=wx.ALIGN_RIGHT)
panel.SetSizer(layout)
self.Show()
app = wx.App(False)
CustomFrame("BoxSizer")
app.MainLoop()
ソースコードwindow_display09.pyは,wx.VERTICAL
を使っているため,縦方向のBoxSizerは次の図の配置となります.
それでは,上下左右寄せの4つ変化を見えてみよう.
- wx.ALIGN_TOP:縦方向のスペースがないため,変化なし
- wx.ALIGN_BOTTOM:横方向のスペースがないため,変化なし
- wx.ALIGN_LEFT:デフォルトが左寄せのため,変化なし
- wx.ALIGN_RIGHT:自身に割り当てられた領域の右端へアイテムが配置される
これの横方法のBoxSizerを省略します.ぜひ自分でやってみてください.
そのほか
- wx.EXPAND(領域をすべて使用する)
- wx.:SHAPED(アスペクト比を維持しつつ,可能な限り領域を使用)
それでは使い方を見てみよう.
import wx
class CustomFrame(wx.Frame):
def __init__(self,title):
wx.Frame.__init__(self,None,-1,title,size=(400,400))
panel = wx.Panel(self)
layout = wx.BoxSizer(wx.VERTICAL)
layout.Add(wx.Button(panel,wx.ID_ANY,"B01"),flag=wx.EXPAND)
layout.Add(wx.Button(panel,wx.ID_ANY,"B02"),flag=wx.SHAPED)
panel.SetSizer(layout)
self.Show()
app = wx.App(False)
CustomFrame("BoxSizer")
app.MainLoop()
- wx.EXPAND:横方向のスペースを全て埋めるように領域を使用.
- wx.:SHAPED:BoxSizerでは縦横どちらかのスペースがないので,変化なし.
今回のwxPythonを使ってみる(4)は以上で終わります.
読んでいただいてありがとうございます.
また今度で会いましょ!