3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

wxPythonを使ってみる (6)

Last updated at Posted at 2018-07-13

こんにちは.これからwxPythonを使ってみる(6)について始めたいと思います.
対象や動作環境などのはじめに必要な情報はwxPythonを使ってみる(1) と同じになります.
また,今回の内容は前の5回の続きとなります.是非読んで見てください.

特徴

前回までは,BoxSizerについて説明しまいした.
今回から,GridSizerについて学びましょう.

GridSizerは,コンテナー領域を指定の行数,列数を分割し,順番にウィジェットを配置していくマス目状のレイアウトです.

スクリーンショット 2018-07-04 11.57.19.png

コンストラクタ関数には行数と列数を渡します.1行目からアイテムを配置していき,1行目への配置が終わったら2行目へ.
window_display12.py は上の図のプログラムとなります.

window_display12.py
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.GridSizer(2,2,0,0)
			layout.Add(wx.Button(panel,wx.ID_ANY,'B01'))
			layout.Add(wx.Button(panel,wx.ID_ANY,'B02'))
			layout.Add(wx.Button(panel,wx.ID_ANY,'B03'))
			layout.Add(wx.Button(panel,wx.ID_ANY,'B04'))
			
			panel.SetSizer(layout)
			
			self.Show()
			
app = wx.App(False)
CustomFrame('GridSizer')
app.MainLoop()

ここで注意すべきどこは,layout = wx.GridSizer(2,2,0,0)となります.wx.GridSizerコンストラクタ関数の引数は4つが必要です.
wx.GridSizer(行数を指定,列数を指定,縦の余白を指定,横の余白を指定)

このプログラムを書いたとき,wx.GridSizer(2,2)のように行数と列数のみを指定して書きましたが,下のようなエラーが吐き出されました.

layout = wx.GridSizer(2,2)
TypeError: GridSizer(): arguments did not match any overloaded call:
overload 1: not enough arguments
overload 2: argument 2 has unexpected type 'int'
overload 3: not enough arguments
overload 4: not enough arguments

このエラーを検索してみると
https://stackoverflow.com/questions/37502112/typeerror-gridsizer-arguments-did-not-match-any-overloaded-call
のサイトがあります.回答は下のように書かれています.

As you are running Python 3.4 I presume you are using wxPython Phoenix. According to the documentation of wx.GridSizer two int do not match any of the allowed signatures. Use e.g. three integers instead.

これをみて引数を3つにすると,エラーがなおりました.
また,wx.GridSizer(行数を指定,列数を指定,縦の余白を指定,横の余白を指定)の縦の余白を指定したくないときは,wx.GridSizer(2,2,hgap=2)で書けば,行列数と横の余白を指定することができます.

今回のwxPythonを使ってみる(6)は以上で終わります.
読んでいただいてありがとうございます.

「wxpythonを使ってみる」目次

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?