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ページしか読み進めていない…