2009-06-24 18 views
5

Pythonには、tkinter、wxWidgets、pyGTKなどのGUIライブラリがたくさんあります。しかし、このGUIはすべてインストールしなければならず、かなり重いので、前述のGUIライブラリを中継するエンドユーザーGUI Pythonアプリケーションを配備するのはちょっと複雑です。純粋なPythonのGUIライブラリですか?

最近、私はpythonに組み込まれたctypesについて考えました。理論的には、Windows上でctypes(windll.user32.CreateWindowExなど)、MacOSではネイティブpyObjC、gnome/kdeではpyGTK/pyQtを使用する純粋なPython GUIライブラリを作成することは可能です。そのような図書館はありますか?そうでない場合は、アイデアの何が間違っていると思いますか?

+1

Tkinterをインストールする必要はありません。Pythonの標準配布の一部です。 –

+0

WindowsおよびMacOSのみ。それはubuntuなどにインストールする必要があります – grigoryvp

+0

あなたは "wxをPythonで書き直す"のような意味ですか?なぜそれはすでに行われていることよりも良いと思うのですか? – nosklo

答えて

10

最小限の労力と最善の結果を得るには、既存のGUIライブラリを使用してアプリケーションを導入するために必要なことを理解する必要があります。それらのすべてで働いていたものが、それぞれを使用するために多くの仕事をしている機能、またはの最小共通分母のセットをサポートする羽目になるする可能性があるので

+1

+1:「かなりヘビーな」は過剰なものです。ほとんどの場合、GUIを構築するためにはすべてが必要です。 –

2

ホイールを発明していないと思います。それはうまくいくだろうが、なぜそれをしなければならないのだろうか?あなたが言及したすべてのGUIライブラリは安定しており、多かれ少なかれ弾丸ではありません。

純粋なPythonライブラリを実装している実験がいくつかあると思います。しかし、私はそれを見たことはありません。 GUIに関することはすべて難しい作業です。純粋なPythonライブラリにはそのような大きな聴衆がいません。

3

は、一つには、すべてのこれらのライブラリは、異なる抽象化を使用しますその最大限まで

4

「ヘビー級」の意味が分かりません。

wxは各プラットフォームでネイティブコントロールを使用していますが、私が想像しているほどPythonで使いやすいです。結局のところ、GUIは複雑になる可能性があるため、GUI APIは複雑です。

私はwxは、ウィンドウを構築するために必要な努力と画面上に表示されるものの品質は素晴らしいと思います。私はあなたが自分で何かをより良く転がす可能性が高いとは思わない。

8

TkinterはPython標準ディストリビューションの一部で、デフォルトでインストールされます。最初の場所にグラフィカルな表示があるすべてのPythonインストールでこれを見つけることができます。

+1

+1。より多くのウィジェットが必要な場合は、軽量でTKinterのプラグインをいくつか追加して、ツールキットを大幅に改善します。しかし、まだ、UIは醜いです... –

+6

"醜いです"というコメントは主にTkinterの古いバージョンにのみ適用されます。 Modern Tkは、それをサポートするプラットフォーム上でネイティブウィジェットを使用します。最近の醜いTkinterアプリケーションは、ツールキットの限界ではなくプログラマーの才能を反映しています。その議論の詳細については、http://stackoverflow.com/questions/349409/why-are-tk-guis-considered-uglyを参照してください。 –

+1

Tkinterは、デフォルトでWindowsとMacOSにのみインストールされます。それはubuntuなどにインストールする必要があります – grigoryvp

5

最終的にあなたはシステムレベルの呼び出しとウィジェットを使用しているので、「pure python gui library」という概念は間違っていますが、それはctypesであるかもしれませんが、あなたのアイデアの実装を開始するとwxPython

5

主に間違っているのは、GTK、Tk、Wx、QT、およびilkのメーカーが既に行っているホイールを再発明していることです。純粋なPythonのGUIは技術的に実現可能で、anyguiのようなプロジェクトでも同様の試みが行われましたが、これを行うことで少ししか得られません。

ネイティブツールキットは、基礎となるプラットフォーム(ネイティブダイアログなど)の違いをカバーする優れた仕事をします。つまり、ツールキットを使用すると、プラットフォーム固有のコードがほとんど必要ないポータブルアプリケーションを作成できます。そのほとんどは、基盤となるツールキットによって抽象化されています。

Windows上のpy2exeやlinuxメソッドなどの配布メカニズムを使用すると、DLLをアプリケーションにバンドルすることができるため、必要なネイティブコンポーネントをすべて削除することができます。しかし、実際にはこれを行うための一般的なクロスプラットフォームの方法はありませんので、各プラットフォーム用に別々のインストーラを維持する必要があります。

10

Python 2.7と3.1以降では、Tkの方がはるかに優れています。

http://docs.python.org/dev/whatsnew/2.7.html#ttk-themed-widgets-for-tk

「のTcl/Tkの8.5は、基本的なTkウィジェットを再実装が、このウィジェットセットが最初に呼ばれた。より多くのカスタマイズ可能な外観を持っているため、より密接にネイティブプラットフォームのウィジェットに似ていることができますをテーマにしたウィジェットのセットが含まれていますTileではなく、Tcl/Tckリリース8.5に追加されるとTtk(テーマTk用)に改名されました。

関連する問題