wxPythonはGUI(Graphic User Interface)のアプリケーションを生成するための異機種間で共通に使えるツールキットである。このツールキットの主たる製作者はRobin Dunn氏である。wxPythonは異機種間で共通に使えるC++で書かれたライブラリーであるwxWidgetsのラッパーである。
wxPythonのモジュール類
ControlsモジュールはGUIのよく使われるさまざまのウィジェットを提供する。例えばボタン、ツールバーそれにノートブックとかである。ウィジェットのことをMSWindowsではContorolsと呼ぶ。CoreモジュールはGUIの開発で使われる基本クラスからなっている。これには全てのクラスの母体となるObjectクラス、ウィジェットの配置を管理するSizer、イヴェント、そして点や長方形といった幾何学図形を描くためのクラスからなる。
wxPythonには多くのウィジェットが登場する。それらは機能上からいくつかに分類される。
これらは派生する各種のウィジェットに対して基本的な機能を提供するものである。これらは祖形(ancestors)と呼ばれる。通常はこれらを直接に使うことはない。
これらはアプリケーションを表現する「枠組み」を提供するウィジェット類である。これらはお互いに独立して使われる。
コンテナは他のウィジェット類を中に配置するために用いるウィジェットである。
これらのウィジェットはアプリケーションの利用者が何らかの応答(文字入力、チェックマークを入れる等)を想定し用いられるウィジェット類である。
これらのウィジェットはアプリケーションの利用者に情報提供のみを行うものである。
Statusbar、Toolbar、Menubarの機能を実装するときに使うウィジェットもある。
継承
例えばボタン・ウィジェットを実装するためのwx.Buttonクラスを考えてみよう。wx.Buttonクラス下図のようには異なった四つのbaseクラスを継承して作られている。
直近のクラスはwx.Controlクラスである。ボタンは小さいある種のwindowである。スクリーン上に提示されるウィジェットはwindowである。従ってそれらはwx.windowを継承して作られることになる。目に見えないオブジェクトもある。sizer、device contextそしてlocale(国際化対応)などがそれである。目に見えるがwindowでないものもある。colour, caret(点滅するカーソル)、そしてcursorがそれである。ウィジェットの全てがcontrolであるわけではない。wx.Dialogはcontrolではない。コンテナと呼ばれるウィジェットに配置されるウィジェットがcontrolである。これがwx.controlを独自のbaseクラスとする理由である。
全てのwindowは各種のイヴェントに反応できる。ボタン・ウィジェットもそうである。ボタンをクリックするとwx.EVT_COMMAND_BUTTON_CLICKEDというイヴェントが発生する。ボタン・ウィジェットはwx.Windowを継承することによってwx.EvtHandlerを継承している。各種のイヴェントに反応するためには個々のウィジェットはwx.EvtHandlerクラスを継承しなければならない。最後に全てのオブジェクトはwx.Objectクラスを継承しなければならない。