こもろぐ @tenkoma

What We Find Changes Who We Become -- Peter Morville著『アンビエント・ファインダビリティ 』

広告:本ブログで紹介している書籍等商品の紹介でAmazonアソシエイトを利用していることがあります。

wxPython IN ACTION読書記録(3)Importing wxPython

p.10

普通Pythonにおいてimportの順番には意味がないし,不都合もないが,wxPythonにおいてはwxモジュールをまずimportしないといくつかの重要なモジュールが力を発揮できない.例えばxrcが例示されている.だから

import wx

この文なしに

from wx import xrc

とやっちゃうのはまずいだろう.

p.11 1.2.2

いつもwxPythonのプログラムに必要なのがapplicationオブジェクトとframeオブジェクト
よくされるのがwx.Appを継承してOnInit()メソッドをオーバーライド?してそのなかでframeの初期化をすること
シンプルなのは(前に出てきたbare.pyをすこし削ったモノ)

import wx
class App(wx.App):

    def OnInit(self):
        frame = wx.Frame(parent=None)#, title='Bare')
        frame.Show()
        return True
app = App()
app.MainLoop()

frame.Show(Boolean)でフレームの見える見えないを制御する
試しにwx.Appインスタンスを作らないでフレームを作ろうとすると,

In [1]: import wx

In [2]: frame = wx.Frame(parent = None, id = -1, title='Bare')
---------------------------------------------------------------------------
wx._core.PyNoAppError                              Traceback (most recent call l
ast)

C:\Python24\<ipython console>

C:\Python24\Lib\site-packages\wx-2.6-msw-unicode\wx\_windows.py in __init__(self
, *args, **kwargs)
    491             long style=DEFAULT_FRAME_STYLE, String name=FrameNameStr) ->
 Frame
    492         """
--> 493         newobj = _windows_.new_Frame(*args, **kwargs)
    494         self.this = newobj.this
    495         self.thisown = 1

PyNoAppError: The wx.App object must be created first!

wx.Appまたはそのサブクラスのオブジェクトをつくりなさいと言われます.
wx.AppのOnInit()メソッドはコンストラクタな役割はしてないようです.次のページに__init__()メソッドが載ってます.
今日はここまで.実質1.5ページしか読み進めていない…