Python
python3
wxpython

wxPythonを使ってみる (5)

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

特徴

前回では,Sizerを使ったレイアウトのBoxSizerのflag引数について学びました.今回もSizerを使ったレイアウトの続きを学んで行きたいと思います.
今回はuserData引数について学びましょう.

userDataはアイテムの追加と同時に,開発者が任意のデータを埋め込むことができます.オブジェクトであれば引く数として渡すことができるのでとても便利です.

window_display11.py
import wx

class CustomData:
    def __init__(self):
        self.y = '2018'
        self.m = '06'
        self.d = '01'

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'),userData='TestUserData')
            layout.Add(wx.Button(panel,wx.ID_ANY,'B02'),userData=100)
            layout.Add(wx.Button(panel,wx.ID_ANY,'B03'),userData=CustomData())

            print(layout.GetItem(0).GetUserData())
            print(layout.GetItem(1).GetUserData())
            print(layout.GetItem(2).GetUserData().y)
            print(layout.GetItem(2).GetUserData().m)
            print(layout.GetItem(2).GetUserData().d)

            panel.SetSizer(layout)

            self.Show()

app = wx.App(False)
CustomFrame('BoxSizer')
app.MainLoop()

上のwindow_display11.pyを実行すると以下の2つの図となります.

スクリーンショット 2018-05-29 12.12.36.png

スクリーンショット 2018-05-29 12.12.20.png

3つのwx.Buttonを持つwx.Frameが表示されます,コンソール上へ次のように出力されます.
以上のように,任意のデータが任意のタイミンングで取り出すことができます.データベースから取得したデータをそのまま格納したりなど,便利な使い方を模索してみてください.

今回のwxPythonを使ってみる(5)は以上で終わります.
読んでいただいてありがとうございます.
次回からSizerを使ったレイアウトのStaticBoxSizerについて学媚態と思います.StaticBoxSizerは,その名の示す通りBoxSizerからの派生しているSizerです.予告はここまで,ではまた今度で会いましょ!

「wxpythonを使ってみる」目次