|
カテゴリ:Python
wPython.org の Getting Started をサカナに第十一弾。Getting started with wxPython でいうと、1 と 2 が終わって、3.Woking with Windows の 3.2 Sizer あたりの話題から。
Sizer を使ったレイアウトを配置Frameの中に、wx.BoxSizer を使ってボタンを3つ、水平方向に並べてみる。
ウィンドウサイズを広げると次のようになる。 self.sizer.Add(self.button_xxxx) でボタンをサイザーに追加に追加していき、SetSizer()でサイザーをセットし、SetAutoLayout()でレイアウトの自動化の指定を行い、Fit()でサイザーを Frame サイズにフィットさせる計算をする。そして Show() でフレーム表示。 sizer.Add するときには、オプションを指定することができる。self.sizer.Add(self.button_xxx, 0) のように指定した場合、 0は、リサイズをするかどうか。0 にするとリサイズせず、 0 より大きい値を設定するとリサイズする(指定がないときは 0 を指定したのと同じ)。 上記の例に変更して、1 を指定すると、サイズを広げたときに、次のようになる。 試しに、牛丼だけ 0、それ以外は 1 にして広げてみると次のようになる。ウィンドウを広げても、牛丼だけサイズが変わらない。カップヌードルとビッグマックはウィンドウの幅に合わせて広がる。 Size にさらにオプションを付けてみる。self.sizer.Add(self.button_xxx, 1, wx.EPAND)としたものが次の画像。ウィンドウのサイズにあわせて、縦横ともにボタンが広がるようになる。フレームを広げると、それに応じてボタンのサイズも大きくなる。BoxSizer が Frame にフィットするようにしているので、ボタンはフレームの中で隙間なく均等に広がる。 ここでまた、牛丼だけ、self.sizer.Add(self.button_xxx, 0, wx.EPAND) とすると次のようになる。ボタンサイズ自体は、フレームにフィットしているものの、牛丼の横幅は、最初のままでリサイズされない。 ちなみに、self.sizer = wx.BoxSizer(wx.HORIZONTAL) のところを、self.sizer = wx.BoxSizer(wx.VERTICAL) とすれば、縦方向に並ぶようになる。 wx.EPAND が指定されているところは、いろいろな値をとることができる。
複数のフラグを指定する場合は、wx.FIXED_MINSIZE|wx.ALIGN_CENTER のように「 | 」でフラグをつないでいく。 ちょっと極端な例だが、もし、次のように指定すれば、
こうなる。 BoxSizer をうまく使えば、ウィンドウサイズを変えたときでも柔軟に対応できそうな感じ。 お気に入りの記事を「いいね!」で応援しよう
Last updated
2015.03.08 17:14:17
コメント(0) | コメントを書く
[Python] カテゴリの最新記事
|