wxpython チュートリアル
wxpythonを使い始める
サーチ…
備考
wxPythonとは
単純にwxPythonは、 wxWidgets C ++クロスプラットフォームGUIライブラリへのバインディングのセットです。
OK wxWidgetsは何ですか
wxWidgetsライブラリは、さまざまなGUI要素の抽象概念を無償で無償で提供しています。ネイティブコントロールをそのまま使用し、ネイティブの外観、感触、スピードを維持します。このように、開発者が単一のコードベースを使用してWindows、Mac OS X、Linuxおよびその他のプラットフォーム用のアプリケーションを作成できるように、GUI作成や他の多くのユーティリティ用の抽象化をプラットフォームに提供します。 wxWidgetsは1992年に開始されました 。 ここで詳細な履歴を見ることができます 。 wxWidgetsライブラリはwxWindows Licenseの下で配布されています。これはL-GPLに基づいていますが、例外節があります。 例外句はあなた独自のアプリケーションのソースを配布するために必要とせずに wxWidgetsのに動的または静的アプリケーションをリンクすることができます。言い換えれば、あなたは無償で、 無料または商用のいずれかのプロジェクトのためのwxWidgetsを使用することができます。ライセンスでは、wxWidgetsライブラリ自体の拡張機能を返すことが奨励されています。
ハイライトは、 wxWidgetsはクロスプラットフォームアプリケーション開発のための100sのクラスで構成されていることに注意してください 。
- Sizerを使用したウィンドウレイアウト
- デバイスコンテキスト(ペン、ブラシ、フォントと一緒に)
- 包括的なイベント処理システム
- HTMLヘルプビューア
- サウンドとビデオの再生
- Unicodeと国際化のサポート
- ドキュメント/ビューアーキテクチャ
- Archiectureの印刷
- ソケット
- マルチスレッド
- ファイルとディレクトリの操作
- オンラインおよび状況依存のヘルプ
- HTMLレンダリング
- 基本コンテナ
- 画像の読み込み、保存、描画、操作
- 日時ライブラリとタイマー
- エラー処理
- クリップボードとドラッグアンドドロップ
これらの機能の一部、 例えばスレッド化は実際にはGUIに関連しないが、有用なクロスプラットフォーム抽象化を提供するので、例えばスレッド化の場合には、サポートされているプラットフォーム上でアプリケーションコードのセットが動作する。
何年もの間、wxWidgetsライブラリは、ASCIIコードとUnicodeの両方のために構築された静的ライブラリと動的ライブラリの1組のソースコードからデバッグビルドに加えて 、4つの別々のビルドを生成しました。通常は、最も一般的なバリアントで事前に構築され、ターゲット環境のさまざまなオプションと、多数のツールチェーンがサポートされている開発者C ++ツールチェーンで構築するためのソースコードとして使用できます。
このライブラリのためのPythonバインディングといくつかの追加がwxPythonを形成します。
wxPythonとは何か(何が私に与えられますか?)
wxPythonは、クロスライセンスのGUIライブラリから恩恵を受ける方法を開発者に提供し、明確なライセンスを与えながら、Pythonの利点も提供します。 wxWidgetsやPythonのようにwxPythonは無料で無償でオープンソースであり、ソースコードを配布する必要はありません 。
- フルGUIスイート(これに限定されない):
- Windows(MDI Windowsを含む)
- ウィザード
- フレーム&ミニフレーム
- ダイアログ、スタンダード、アドバンスド&カスタム
- ブック、ツリー、グリッド、データビューコントロール
- ゲージ、スライダー、スピナー、アニメーション、クリップボード、ドラッグアンドドロップ
- HTML、PDFおよび画像ビューアのサポート
- GUIコンポーネントは完全に配置できますが、オートサイジングなどをサポートするサイザーベースのレイアウトを使用することを強く推奨します。
- クロスプラットフォーム - Windows、OS-X、Linux用のGUIを、コード内に条件文を含まない単一コードベースでサポート
- ネイティブスピード、ルック&フィール
- 迅速なプロトタイプ、テスト、デバッグ - これがPythonであることを忘れないでください
- デモパッケージのすべてのサンプルを実行して編集します。
- 市販の製品であっても、ライセンスをクリアしてください。
- 必要であれば、既に使用しているので、後でPython GUIをC ++ wxWidgets GUIにリファクタリングすることができます。
- StackOverflowとメーリングリストの両方で、大規模で活発なユーザーと開発者コミュニティ。
Python自体がwxWidgetsのユーティリティ関数を実装するためのクロスプラットフォームメカニズムを提供しているところで、 再びスレッド化することは良い例であり 、wxPythonでは意図的に省略されています。
wxPythonには、ドキュメントとデモパッケージ内で実行、テスト、編集できる非常に大きなデモスイートもあります。
wxPythonのフレーバー
ASCII対Unicode :
長年にわたり、 wxWidgetsの場合と同様に 、開発者はASCIIとUnicodeのどちらかを選択するだけでなく、特定のPythonバージョンと32/64ビットオプションのビルドが必要でした。 wxPythonについては、wxPythonのASCIIのみのビルドが廃止され、Unicodeのサポートが常に利用可能になりました。
クラシックvs.フェニックス :
wxPython 3.0.0以降、 リリースされた wxPythonの "Classic"ビルドとPhoenixの未リリースビルドが存在しました。古典的なビルドは、wxWidgetsビルドの後ろに同じ数のビルドより遅れがちで、ドキュメンテーションパッケージはC ++です。実行可能インストーラとしてのウィンドウの場合、さまざまなプラットフォーム( Classicのインストールを参照)でダウンロードできます。フェニックスのバインディングは、大部分が自動的に生成され、wxWidgetsのビルドともwxPythonの固有のドキュメントが含まれる上より密接に従ってください-それは、ビルド可能なソースからであるか夜間の車輪が (参照、PIPを使用して取得することができるよう構築するフェニックスのインストール )。
wxPythonではなくwxWidgetsでは
wxPythonはwxWidgetsライブラリをいくつかの機能で拡張していますが、wxWidgetsでは利用できない以下のものがいくつかあります:
- プログラマ編集者とシェル: クラスト 、 クラスト スライス 、 AlaCart&AlaMode 、 AlaModeTest
- 通訳と魔法
- インスペクション - これにより、すべてのアプリケーションGUIコンポーネントをブラウズするウィンドウを起動できます。
- 豊富なデモ
Win10のデモスクリーンショット
すべてのブランチを閉じたwxPythonのデモ: 最近の追加の1つ:
AGWの1つ(Advanced Generic Widgets):
wxPython Phoenixのインストール
wxPython Phoenixは、 wxPythonの最新バージョンです(現在、公式リリースのない2016年9月 )。それはあなたがあなたのプラットフォームとPythonのバージョンのスナップショットビルド(つまり、Pythonのホイール)をダウンロードすることができますPythonの2とPython 3の両方をサポートしてここに 。
wxPython Phoenixは、主に自動化されたメカニズムを利用して、wxWidgetsライブラリのPythonバインディングとドキュメンテーションの両方を生成します。 Phoenix wxPythonのドキュメントは、 Sphinxを使用して作成されています。これにより、wxPythonでは使用できない多くのオーバーロードを含む、古典的なビルドのC ++ドキュメントとは対照的に、明快さが向上します。
wxPython Phoenixをインストールする前に、 Pythonとpipをインストールする必要があります。
pipを使ってPhoenixバージョンのwxPythonをインストールすることができます。現在推奨されている方法は次のとおりです。
python -m pip install --no-index --find-links=http://wxpython.org/Phoenix/snapshot-builds/ --trusted-host wxpython.org wxPython_Phoenix
このコマンドを使用すると、pipはwxWidgetsもインストールします。 Phoenixが公式にリリースされたとき、この複雑なpipコマンドはおそらく 'pip install wxpython'になるでしょう。
注:wxPython Phoenixは現在ベータ版であり、Classicバージョンのウィジェットはすべて含まれていません。
wxPython Classicのインストール
wxPython Classicは、wxPythonライブラリのPython 2ビルドです。 Pythonバインディングの生成には多数の手動介入が必要であり、ドキュメントは単にwxWidgetsのドキュメントであり、wxPythonメカニズムに関するいくつかのアノテーションが含まれているため、wxWidgetsの新しいリリースとwxPythonの対応リリースの間に通常数週間から数ヶ月の遅延があります。
wxPython Webサイトのダウンロードページに移動して、ご使用のプラットフォーム用にダウンロードできるwxPythonのバージョンが既に存在するかどうかを確認します。
Classicの最新バージョンは3.0.2.0です
Windows
Webサイトには、32ビット版と64ビット版のWindowsプラットフォーム用のPython 2.6および2.7用インストーラがあります。これらのファイルをダウンロードして実行してインストールしてください。
注意:インストールした正しいPython用のwxPythonインストーラをダウンロードしてください。たとえば、Python 2.7の32ビット版をお持ちの場合は、wxPythonの32ビット版インストーラが必要です
マック
OSX 10.5以上をお持ちの場合は、wxPythonのCocoa版をダウンロードしてインストールしたいと考えています。 Cocoaバージョンは64ビットMacもサポートしています。
OSXのバージョンが10.5未満のMacをお使いの場合は、 Carbonビルドが必要です。
Linux
Linuxプラットフォームのパッケージマネージャー(yum、apt-getなど)が、インストール可能なwxPythonのバージョンを持っているかどうかを調べる最初のことです。残念ながら、wxPython用の多くのLinuxパッケージは、3.0.2.0ではなく2.8.12.1用です。あなたのパッケージマネージャーが最新バージョンを持っていない場合は、おそらくあなた自身でビルドする必要があります。
3.0.2.0-Classicのビルド手順はこちら
こんにちは世界
Hello Worldプログラムを作成する簡単な方法:
import wx
app = wx.App(redirect=False)
frame = wx.Frame(parent=None, id=wx.ID_ANY, title='Hello World')
frame.Show()
app.MainLoop()
出力:
もっと典型的な例は、 wx.Frameをサブクラス化することです :
import wx
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title='Hello World')
self.Show()
if __name__ == '__main__':
app = wx.App(redirect=False)
frame = MyFrame()
app.MainLoop()
これはPythonのsuperを使うために書き直すこともできます:
import wx
class MyFrame(wx.Frame):
def __init__(self, *args, **kwargs):
"""Constructor"""
super(MyFrame, self).__init__(*args, **kwargs)
self.Show()
if __name__ == '__main__':
app = wx.App(False)
frame = MyFrame(None, title='Hello World')
app.MainLoop()
wxPythonリリースシリーズとは?
wxWidgetsプロジェクトは、Linuxカーネルプロジェクトで使用されるリリースモデルを採用しました。ここでは、1セットが「安定」とみなされ、次のセットが「開発」と見なされる交互のリリースセットがあります。 wxWidgetsの場合、「安定」と「開発」はバグを指すのではなく、APIの安定性と下位互換性を意味します。
安定 :シリーズの持続時間の間、既存のAPIは変更されませんが、新しい非仮想クラスのメソッドなどを追加できます。 C ++ライブラリのバイナリ互換性は、クラスおよび構造体のメモリ内サイズまたはレイアウトを変更する変更を許可しないことによって維持されます。これは安定版のシリーズではどんな種類の拡張やバグ修正ができるのか制限することがありますが、これは実際にはC ++層にしか影響しません。
開発 :リリースシリーズの主な目的は、次の安定版シリーズを作成するために、バイナリ互換性の問題により、新しい機能を追加したり、安定したシリーズで修正できなかった問題を修正することです。したがって、開発シリーズの期間中、必要に応じてAPIを変更または削除することができますが、C ++のソースレベルの互換性は、非推奨のオーバーロードされた関数やマクロなどを介して維持されます。wxPythonの場合、これはしばしばオーバーロードやマクロがないためにソースレベルの非互換性があり、新しいバージョンのAPIをサポートするために古いバージョンを削除する必要があることがあります。
バイナリ互換性の問題のため、wxWidgets / wxPythonの最新の開発版は、最後の安定版の最新版よりバグが少なくなることがあります。しかし、開発シリーズの各バージョン間でAPIが変更または進化している可能性があるというトレードオフがあります。
バージョン番号はどのように機能しますか?
リリースの場合、wxPythonは4つのコンポーネントバージョン番号を使用します。これはバージョン番号が他のオープンソースプロジェクトでどのように使われているかのように見えますが、微妙な違いがいくつかあります。したがって、一部のABCDリリースでは、次のことを推測できます。
- リリースシリーズ :バージョン番号( AB )の最初の2つのコンポーネントはリリースシリーズを表し、 Bコンポーネントが偶数であれば安定シリーズ、奇数であれば開発リリースシリーズです。たとえば、2.4,2.6,2.8は安定しており、APIは各シリーズ内で多かれ少なかれ固定されており、2.3,2.5,2.7は開発であり、APIと機能は必要に応じて変更または展開できます。
このため、ある安定シリーズと次のシリーズ(2.4から2.6など)の間ではかなり大きな変更があります。これは、他のプロジェクトで変更された場合、バージョン番号の最初のコンポーネントが変更されるためです。代わりに、 ABの組み合わせがバージョンの主要な数であると考えるべきです。
リリース番号 :バージョン番号(C)の3番目の要素は、リリースシリーズの1つのリリースを表します。たとえば、2.5.0,2.5.1,2.5.2,2.5.3 ...は、2.5リリースシリーズのすべてのリリースです。 (この場合、開発シリーズであるため、2.5.3のAPIと機能は、2.5.0とは異なる場所に進化しています)。C ++ wxWidgetsリリースは通常ここで停止し、ABCリリースのみが作成されます。
サブリリース番号、またはwxPythonリリース:バージョン番号(D)の4番目のコンポーネントは、サブリリース、またはwxWidgetsの公式リリース間のインクリメンタルリリースを表すために使用されます。これらのリリースには、wxPythonが公開しているかもしれないwxWidgetsバグや、wxPythonにとって重要なマイナーな拡張機能の修正が含まれています。これは任意のwxWidgetsのスナップショットではなく、ソースコードリポジトリ以外のwxWidgetsでまだ利用できない修正や拡張機能を備えたテスト済みのバージョンのコードです。
ソース: https : //wiki.wxpython.org/ReleaseSeries