3

私は興味を持ち、過去1時間Pythonを使用したGUI開発について読んでいました。wxPython、PyQt、Qt用のNokiaのPythonバインディング、およびTkinterのドキュメントを読んだ後、質問が思い浮かびました。

Pythonでコンソールアプリケーションを作成すると、組み込みのPythonインタープリターを使用して実行されます(これは、私の場合は常にではないにしても、通常はcpythonであると思います)。

それで、私はこれらの「ウィジェットツールキット」の場合はどうなるのだろうかと思っていました。

  • Pythonコードはどのように実行され、何がそれを解釈(または実行)しますか?

  • Pythonコードのどの部分がPythonインタープリターを使用して解釈されますか?

  • または、Pythonコードは字句的に分析され、ウィジェットのツールキットによって解析されます。ツールキットは、解釈して実行します(またはビルド中にコンパイルします)。

Pythonインタープリターを使用したPythonアプリケーションの(少し理解しやすい)解釈と比較して、バックグラウンドで何が起こっているのかを理解することを楽しみにしています。

ありがとうございました。

PS。この質問を閉じるに値すると考える天才は誰でも。多くの人が外部のライブラリやシステムの内部について疑問に思っています。特に見た目ほど単純ではないもの。現在、SEでこれを説明する質問はありません。

4

1 に答える 1

8

これは、「GUIツールキット」に関する非常に一般化された高レベルの説明です...

Qtフレームワークを使用することにしたとしましょう。このフレームワークはC++で書かれています。使用できるPythonバインディングは2つあり、C++バージョンと同じAPIに対してPythonでGUIアプリケーションを作成できます。

Pythonバインディングは、C++コードへの呼び出しをラップアラウンドします。たとえば、PyQt4はを使用しsip、PySideはを使用しshibokenます。これらは、C++オブジェクトと目的のPythonインターフェイスの間でマッピングする方法の仕様を採用した単なる言語ラッピングツールです。

では、PyQtの使用を開始します...作成するすべてのコードは、Pythonインタープリターを通過する必要があります。その一部は純粋なPythonである可能性があります。その一部は、ウィジェットのようなものを作成するためにC++ライブラリを呼び出します。Qtでは、対応するPythonインスタンスに関連付けられたC++ポインターがあります。

プラットフォームに依存しないAPI呼び出しを、ボタンやメニューを正確に描画する方法など、プラットフォーム固有のものに変換するために、プラットフォームのウィンドウマネージャーと通信するのはC++レイヤーです。

コンソールのみを作成する場合でも、GUIベースのPythonアプリケーションを作成する場合でも、すべてがPythonインタープリターを経由してPythonコードを解釈します。何かがあなたのためにPython言語を解釈する必要があります。

于 2012-12-13T20:07:45.387 に答える